迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 >

R 中按列删除重复行

作者:迹忆客 最近更新:2023/03/21 浏览次数:

本文将介绍如何在 R 中逐列删除重复行。

使用 dplyr 包的 distinct 函数按列删除 R 中的重复行

dplyr 包提供了 distinct 函数,这是 R 语言中最常用的数据操作库之一。distinct 在给定的数据框中选择唯一的行。它将数据框作为第一个参数,然后是选择过程中需要考虑的变量。可以提供多个列变量来过滤唯一行,但在以下代码片段中,我们演示了单个变量示例。第三个参数是可选的,具有默认值 - FALSE,但如果用户明确传递 TRUE,该函数将在过滤后保留数据框中的所有变量。请注意,dplyr 使用名为管道的运算符函数 - %>%,它被解释为提供左变量作为右函数的第一个参数。即,x %?% f(y) 符号变为 f(x, y)

library(dplyr)

df1 <- data.frame(id = c(1, 2, 2, 3, 3, 4, 5, 5),
                 gender = c("F", "F", "M", "F", "B", "B", "F", "M"),
                 variant = c("a", "b", "c", "d", "e", "f", "g", "h"))

t1 <- df1 %>% distinct(id, .keep_all = TRUE)
t2 <- df1 %>% distinct(gender, .keep_all = TRUE)
t3 <- df1 %>% distinct(variant, .keep_all = TRUE)

df2 <- mtcars

tmp1 <- df2 %>% distinct(cyl, .keep_all = TRUE)
tmp2 <- df2 %>% distinct(mpg, .keep_all = TRUE)

在 R 中使用 group_byfilterduplicated 函数按列删除重复行

按列值删除重复行的另一种解决方案是将数据框与列变量分组,然后使用 filterduplicated 函数过滤元素。第一步是使用 group_by 函数完成的,该函数是 dplyr 包的一部分。接下来,前一个操作的输出被重定向到 filter 函数以消除重复的行。

library(dplyr)

df1 <- data.frame(id = c(1, 2, 2, 3, 3, 4, 5, 5),
                 gender = c("F", "F", "M", "F", "B", "B", "F", "M"),
                 variant = c("a", "b", "c", "d", "e", "f", "g", "h"))

t1 <- df1 %>% group_by(id) %>% filter (! duplicated(id))
t2 <- df1 %>% group_by(gender) %>% filter (! duplicated(gender))
t3 <- df1 %>% group_by(variant) %>% filter (! duplicated(variant))

df2 <- mtcars

tmp3 <- df2 %>% group_by(cyl) %>% filter (! duplicated(cyl))
tmp4 <- df2 %>% group_by(mpg) %>% filter (! duplicated(mpg))

在 R 中使用 group_byslice 函数按列删除重复行

或者,可以将 group_by 函数与 slice 一起使用,以按列值删除重复的行。slice 也是 dplyr 包的一部分,它按索引选择行。有趣的是,当数据框被分组时,slice 将选择每个组中给定索引上的行,如以下示例代码所示。

library(dplyr)

df1 <- data.frame(id = c(1, 2, 2, 3, 3, 4, 5, 5),
                 gender = c("F", "F", "M", "F", "B", "B", "F", "M"),
                 variant = c("a", "b", "c", "d", "e", "f", "g", "h"))

t1 <- df1 %>% group_by(id) %>% slice(1)
t2 <- df1 %>% group_by(gender) %>% slice(1)
t3 <- df1 %>% group_by(variant) %>% slice(1)

df2 <- mtcars

tmp5 <- df2 %>% group_by(cyl) %>% slice(1)
tmp6 <- df2 %>% group_by(mpg) %>% slice(1)

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

R 中具有多个条件的函数向量化

发布时间:2023/03/21 浏览次数:64 分类:编程语言

一项常见的数据分析任务是根据同一行的其他列使用一个或多个条件创建或更新数据框列。 如果我们尝试使用 if 语句来执行此操作,则只会使用第一行来测试条件,并且会根据该行更

在 R 中读取 xlsx 文件

发布时间:2023/03/21 浏览次数:66 分类:编程语言

在这篇文章中,你将会了解到两个在 R 中读取 xlsx 文件的最完整和最容易使用的库:readxl 和 openxlsx。

清理 R 的环境

发布时间:2023/03/21 浏览次数:178 分类:编程语言

在本教程中,你将学习如何在 R 中编写一个函数,在不需要重新启动 R 的情况下清除环境。

在 R 中注释掉多行

发布时间:2023/03/21 浏览次数:63 分类:编程语言

在本文中,你将学习如何在 R 中注释出多行,而不必在每一行的开头手动写一个#字符来注释。

在 R 中清除内存

发布时间:2023/03/21 浏览次数:197 分类:编程语言

在本教程中,你将学习如何清除 R 系统占用的内存,而不必重新启动它或重新启动它运行的计算机。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便