我有一个包含多列的大型数据框,例如:
ID, time, OS, IP
该数据框中的每一行都对应一个条目。在该数据框中,对于某些ID,存在多个条目(行)。我想要消除这些多个行(显然,其他属性将会因相同的ID而不同)。或者换句话说:我只想要每个ID的单个条目(行)。
当我在ID列上使用unique
时,我只得到了级别(或每个唯一的ID),但我也想保留其他属性。
我尝试使用apply(x,2,unique(data$ID))
,但这也不起作用。
我有一个包含多列的大型数据框,例如:
ID, time, OS, IP
该数据框中的每一行都对应一个条目。在该数据框中,对于某些ID,存在多个条目(行)。我想要消除这些多个行(显然,其他属性将会因相同的ID而不同)。或者换句话说:我只想要每个ID的单个条目(行)。
当我在ID列上使用unique
时,我只得到了级别(或每个唯一的ID),但我也想保留其他属性。
我尝试使用apply(x,2,unique(data$ID))
,但这也不起作用。
subset(data,!duplicated(data$ID))
应该能解决问题
如果您希望每个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