这个问题在这里已经有了答案:
Remove duplicated rows using dplyr
(6 个回答)
3年前关闭。
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)
最佳答案
df[!duplicated(df[ , c("id","gender")]),]
# id gender variant
# 1 1 Female a
# 3 1 Male c
# 4 2 Female d
# 5 2 Male e
使用
subset
执行此操作的另一种方法如下:subset(df, !duplicated(subset(df, select=c(id, gender))))
# id gender variant
# 1 1 Female a
# 3 1 Male c
# 4 2 Female d
# 5 2 Male e
关于R:如何按列删除重复的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46656833/