2

我正在尝试对我在 R 中使用的一个大数据集进行子集unique化。根据 A 列,我通常使用命令来获取没有重复项的数据集。在这里我想做一些不同的事情。如果原始行在 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 中执行此操作?

非常感谢,

4

2 回答 2

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
于 2013-07-07T18:57:26.117 回答
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]
于 2013-07-07T19:00:22.653 回答