重复R中的行

时间:2013-07-07 18:53:39

标签: r duplicates rows subset duplicate-removal

我正在尝试对我在R中使用的大数据集进行子集化。根据A列,我通常使用unique命令来获取没有重复项的数据集。这里我想做点什么有点不同。如果在A列中重复,我期待删除原始行。 这里是数据的样本:

Name   A    B    C    D    E
JHA    2    45   2    32   20
OMI    2    49   5    321   5  
FIG    3    17   5    14   10
GJI    4    35   6    25   22
IJF    5    25   7    36   32
OPI    4    10   8    66   25

我希望看起来像这样

Name  A    B    C    D    E
FIG   3    17   5    14   10
IJF   5    25   7    36   32

是否有可以在1中执行此操作的命令?

非常感谢,

2 个答案:

答案 0 :(得分:4)

您可以像这样使用duplicated

dat[!(duplicated(dat$A)| 
      duplicated(dat$A,fromLast=TRUE)),]
  A  B C  D  E
3 3 17 5 14 10
5 5 25 7 36 32

答案 1 :(得分:3)

另一种方式:

df[!df$A %in% df$A[duplicated(df$A)], ]
  Name A  B C  D  E
3  FIG 3 17 5 14 10
5  IJF 5 25 7 36 32

(或)

df[!with(df, A %in% A[duplicated(A)]), ]

(或)

df[with(df, setdiff(A, A[duplicated(A)])), ]

如果您对data.table解决方案感兴趣,那么您可以这样做:

require(data.table)
dt <- data.table(df)
dt[dt[, .I[.N == 1], by = A]$V1]