我正在尝试对我在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中执行此操作的命令?
非常感谢,
答案 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]