我有一个大文本文件,如下所示:
tag colony diff
1035 03 498
1035 03 -44365
1035 03 -66652
1035 04 234234
1035 04 -343
1035 04 -23423
1037 10 234234
1037 10 -343
1037 10 -23423
大多数'标签'只有一个殖民地,例如上面例子中的1037。但是,有些有2个,例如1036同时有03和04.我想要做的是为每个标记加上diff列,但是对于每个标记分别,所以输出将是这样的。
tag colony total
1035 03 -110 519
1035 04 210 648
1037 10 210 648
到目前为止(我一直在R工作),我一直在使用聚合:
x2 = aggregate(x$diff, by=list(tag=x$tag), FUN=sum)
但无论殖民地如何,这都会将所有标签统计在一起。是否有一种方法可以将另一个级别添加到聚合函数中,以便单独计算殖民地数量?
由于
答案 0 :(得分:1)
我们可以使用dplyr
library(dplyr)
df1 %>%
group_by(tag, colony) %>%
summarise(total = sum(diff))
或data.table
library(data.table)
setDT(df1)[, .(total = sum(diff)), .(tag, colony)]
答案 1 :(得分:0)
x2 <- aggregate(x$diff, by=list(x$tag,x$colony), FUN=sum)
或等效地作为公式x2 <- aggregate(diff~tag+colony,data=x,FUN=sum)