有一个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
我可以循环执行此操作,但也许有更优雅的解决方案
答案 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列的唯一值