在R中选择唯一的行

时间:2017-08-02 12:26:04

标签: r

有一个data.frame,其中包含变量的重复值" Time"

> data.old
             Time  Count  Direction
1    100000630955     95          1
2    100000637570      5          0
3    100001330144      7          1
4    100001330144     33          1
5    100001331413     39          0
6    100001331413     43          0
7    100001334038      1          1
8    100001357594     50          0

您必须保留所有值不重复。并总结变量的值" Count"具有重复值,即

> data.new
             Time  Count  Direction
1    100000630955     95          1
2    100000637570      5          0
3    100001330144     40          1
4    100001331413     82          0
5    100001334038      1          1
6    100001357594     50          1

我可以借助命令

找到所有这些独特的值
> data.old$Time[!duplicated(data.old$Time)]
   [1] 100000630955 100000637570 100001330144 100001331413 100001334038 100001357594  

我可以循环执行此操作,但也许有更优雅的解决方案

3 个答案:

答案 0 :(得分:4)

以下是使用dplyr的一种方法。这是你想要做的吗?

library(tidyverse)
data.old %>%
group_by(Time) %>%
   summarise(Count = sum(Count))

编辑:保留其他变量

OP已表示希望将其他变量的值保留在summarise删除的数据帧中。假设所有其他变量的值对于汇总的所有行都相同,您可以使用this SO question中的Mode函数。

Mode <- function(x) {
  ux <- unique(x)
  ux[which.max(tabulate(match(x, ux)))]
}

然后将我的答案更改为以下内容,对每个要保留的变量调用Mode。这适用于数字和字符数据。

library(tidyverse)
data.old %>%
group_by(Time) %>%
   summarise(Count = sum(Count), Direction = Mode(Direction))

答案 1 :(得分:1)

这是使用聚合函数

的那个
data.new<-aggregate( Count~Time , data=data.old, sum, na.rm=TRUE)

答案 2 :(得分:1)

this.parentNode.id

当然,假设您要保留Direction列的唯一值