R表中的值与2个因子相加

时间:2017-04-19 13:42:00

标签: r text

我有一个大文本文件,如下所示:

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)

但无论殖民地如何,这都会将所有标签统计在一起。是否有一种方法可以将另一个级别添加到聚合函数中,以便单独计算殖民地数量?

由于

2 个答案:

答案 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)