这个问题在这里已有答案:
df <- data.frame(id = c(1, 1, 1, 2, 2),
gender = c("Female", "Female", "Male", "Female", "Male"),
variant = c("a", "b", "c", "d", "e"))
> df
id gender variant
1 1 Female a
2 1 Female b
3 1 Male c
4 2 Female d
5 2 Male e
我想根据数据集中的 gender
列删除data.frame中的重复行 . 我知道有一个类似的问题(here),但这里的不同之处在于我想删除数据集的每个子集中的重复行,其中每个子集由唯一的 id
定义 .
我想要的结果是这样的:
id gender variant
1 1 Female a
3 1 Male c
4 2 Female d
5 2 Male e
我已经尝试了以下它并且它有效,但我想知道是否有更干净,更有效的方法吗?
out = list()
for(i in 1:2){
df2 <- subset(df, id == i)
out[[i]] <- df2[!duplicated(df2$gender), ]
}
do.call(rbind.data.frame, out)
2 回答
这是一个基于
dplyr
的解决方案,如果您有兴趣(编辑包含Gregor的建议)也可能值得使用
arrange
函数,具体取决于应删除variant
的值 .使用
subset
执行此操作的另一种方法如下: