【问题标题】:Get rid of rows with duplicate attributes in R摆脱 R 中具有重复属性的行
【发布时间】:2011-02-15 02:35:17
【问题描述】:

我有一个大数据框,其中包含以下列:

ID, time, OS, IP

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

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

【问题讨论】:

  • 当不同意时,您必须定义要对具有相同 ID 的观察的其他属性做什么。
  • 好吧,我想看看用户的操作系统分布......所以当我有每个用户只有一个条目的数据框时,我会这样做:mytable

标签: r duplicates dataframe


【解决方案1】:
subset(data,!duplicated(data$ID))

应该做的伎俩

【讨论】:

  • 如果您对如何选择其他数据没有任何启发式想法,这将起作用。对我来说似乎是一个非常奇怪的用例......
【解决方案2】:

如果您想为每个 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-06
    • 2017-01-19
    • 2021-11-26
    • 1970-01-01
    • 2021-05-06
    • 2012-06-27
    相关资源
    最近更新 更多