用多列在数据范围内删除重复行

  • 本文关键字:删除 范围内 数据 r
  • 更新时间 :
  • 英文 :


在这样的数据帧中

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

输入:

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)

在POST中描述为预期输出:

 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's:

> distinct(df,b, .keep_all = TRUE)
  a b  c
1 A 1  i
2 A 2 ii
3 B 4 ii

最新更新