在R中删除具有重复属性的行

时间:2010-05-03 16:05:57

标签: r duplicates dataframe

我有一个包含以下列的大数据框:

ID, time, OS, IP

该数据帧的每一行对应一个条目。在该数据框中,对于某些 ID ,存在多个条目(行)。我想摆脱那些多行(显然,对于相同的ID,其他属性会有所不同)。或者说不同:我只想为每个ID输入一个条目(行)。

当我在ID列上使用unique时,我只收到级别(或每个唯一ID),但我也想保留其他属性。 我曾尝试使用apply(x,2,unique(data$ID)),但这也不起作用。

2 个答案:

答案 0 :(得分:28)

subset(data,!duplicated(data$ID))

应该做的伎俩

答案 1 :(得分:3)

如果要为每个ID保留一行,但每行有不同的数据,则需要决定丢弃其他行的逻辑。例如:

df <- data.frame(ID=c(1, 2, 2, 3), time=1:4, OS="Linux")
df
  ID time    OS
1  1    1 Linux
2  2    2 Linux
3  2    3 Linux
4  3    4 Linux

现在我将保留最大时间值和最后一个操作系统值:

library(plyr)
unique(ddply(df, .(ID), function(x) data.frame(ID=x[,"ID"], time=max(x$time), OS=tail(x$OS,1))))
  ID time    OS
1  1    1 Linux
2  2    3 Linux
4  3    4 Linux