在像这样的数据框架中
a <- c(rep("A", 3), rep("B", 3), rep("C",2))
b <- c(1,1,2,4,1,1,2,2)
df <-data.frame(a,b)
可以使用(基于b列的结果)删除重复项:
df[!duplicated(df), ]
如果a在df中有第三列c并且我想再次根据b列的值删除副本,那么使用它是正确的:
df[!duplicated(df$b), ]
使用第三列。 数据框:
a <- c(rep("A", 3), rep("B", 3), rep("C",2))
b <- c(1,1,2,4,1,1,2,2)
c <- c("i","i","ii","ii","iii","iii","iv","iv")
df <-data.frame(a,b,c)
使用基于b列的删除重复项:
df[!duplicated(df$b), ]
结果如下:
a b c
A 1 i
A 2 ii
B 4 ii
我希望这个
a b c
A 1 i
A 2 ii
B 4 ii
B 1 iii
C 2 iv
答案 0 :(得分:2)
输入:
a <- c(rep("A", 3), rep("B", 3), rep("C",2))
b <- c(1,1,2,4,1,1,2,2)
c <- c("i","i","ii","ii","iii","iii","iv","iv")
df <-data.frame(a,b,c)
在帖子中描述为预期输出:
a b c
A 1 i
A 2 ii
B 4 ii
B 1 iii
C 2 iv
在所有列上使用distinct
似乎可以执行您想要的操作:
>library(dplyr)
>distinct(df)
a b c
1 A 1 i
2 A 2 ii
3 B 4 ii
4 B 1 iii
5 C 2 iv
其他变体:仅允许唯一的b
:
> distinct(df,b, .keep_all = TRUE)
a b c
1 A 1 i
2 A 2 ii
3 B 4 ii