我有一个大数据框,其中包含以下列:
ID, time, OS, IP
该数据帧的每一行对应一个条目。在某些ID的数据框中,存在几个条目(行)。我想摆脱那些多行(显然其他属性对于相同的 ID 会有所不同)。或者换个说法:我只希望每个 ID 有一个条目(行)。
当我unique
在 ID 列上使用时,我只收到级别(或每个唯一 ID),但我也想保留其他属性。我尝试过使用apply(x,2,unique(data$ID))
,但这也不起作用。
我有一个大数据框,其中包含以下列:
ID, time, OS, IP
该数据帧的每一行对应一个条目。在某些ID的数据框中,存在几个条目(行)。我想摆脱那些多行(显然其他属性对于相同的 ID 会有所不同)。或者换个说法:我只希望每个 ID 有一个条目(行)。
当我unique
在 ID 列上使用时,我只收到级别(或每个唯一 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
现在我将保留最大时间值和最后一个 OS 值:
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