R plyr ddply - 如何从结果中保留一个或多个变量?

时间:2015-01-11 21:49:43

标签: r plyr

假设我想在不同类型的资源上总结我的成本,但我想从操作中留下一个特定的来源。为了对所有来源进行成本分解,我使用

ddply(data, .(Source), summarize, Cost= sum(Cost))

但是,让我们说在所有不同类型的资源中,有一个我想从中排除 - 实现这一目标的最简单方法是什么?我可以将结果分组,但有没有办法通过ddply直接执行此操作?

1 个答案:

答案 0 :(得分:2)

例如,您可以将传递到ddply的数据进行子集化:

ddply(subset(data, Source != "abc"), .(Source), summarize, Cost= sum(Cost))

ddply(subset(data, !Source %in% c("abc", "def")), .(Source), summarize, Cost= sum(Cost))

当然,您可以使用[代替subset

或者你可以试试dplyr:

library(dplyr)
data %>% filter(!Source %in% c("abc", "def")) %>% group_by(Source) %>% summarise(Cost = sum(Cost))

或者使用data.table(未测试..):

library(data.table)
setDT(data)[!Source %in% c("abc", "def"), .(Cost = sum(Cost)), by=Source]