【发布时间】:2017-03-18 09:52:27
【问题描述】:
我有一个数据框,其中包含有关不同国家/地区某些组织的活动的信息。 orga 列包含组织的名称,c1 到 c4 是国家列,包含组织在该国开展的活动数量, home 是组织的居住国。 home中的值对应c1到c4列名中的数字。
orga <- c("AA", "AB", "AC", "BA", "BB", "BC", "BD")
c1 <- c(3,1,0,0,2,0,1)
c2 <- c(0,2,2,0,1,0,1)
c3 <- c(1,0,0,1,0,2,0)
c4 <- c(0,1,1,0,0,0,0)
home <- c(1,2,3,2,1,3,1)
df <- data.frame(orga, c1, c2, c3, c4, home)
我知道想添加一个额外的列 foreign,包含有关组织所有外国活动的信息,总结了 c1 到 c4 但不在在本国的列中。因此,该函数不应总结所有国家/地区列,而应仅总结不是本国的列。例如,如果 home=1,则应省略 c1,如果 home=2,则应省略 c2,等等。
在示例情况下,foreign 应如下所示:
df$foreign <- c(1,2,3,1,1,0,1)
有没有办法总结不同组的列,为每个组留出不同的列,并将总和作为新列添加到数据框中?
我已经看过dplyr-package的group by函数,以及base-r中的aggregate和tapply,但是想不出解决办法。因此,我非常感谢您的帮助。谢谢!
【问题讨论】:
-
您的问题得到答案了吗?如果是,您可以选择答案作为已回答。