R 创建重复值的计数总和

R 创建重复值的计数总和,r,R,我有以下参与者数据集,其中包含位置信息和派生的二进制变量invite和visit id=c(1, 2,3,4,5,6,7,8) fsa=c("K3M", "L5N", "M3T", "N2P", "Q3L", "K3M", "M3T", "N2P") invite=c(1, 1, 1, 0, 1, 1, 0, 1) visit=c(1, 0, 0, 0, 0, 1, 0, 1) df=data.frame(id, fsa, invite, visit) 我想创建一个二进制变量的计数总和,以查看

我有以下参与者数据集,其中包含位置信息和派生的二进制变量
invite
visit

id=c(1, 2,3,4,5,6,7,8)
fsa=c("K3M", "L5N", "M3T", "N2P", "Q3L", "K3M", "M3T", "N2P")
invite=c(1, 1, 1, 0, 1, 1, 0, 1)
visit=c(1, 0, 0, 0, 0, 1, 0, 1)
df=data.frame(id, fsa, invite, visit)
我想创建一个二进制变量的计数总和,以查看某个位置有多少参与者被邀请/访问。因此,对于所有重复的fsa,我想得出邀请和访问的总和,如下所示:

唯一标识符在这里不重要——我只需要一个计数

fsa=c("K3M",  "L5N", "M3T", "N2P", "Q3L")
invite=c(2, 1, 1, 1, 1)
visit=c(2, 0, 0, 1, 0)
df.tomake=data.frame(fsa, invite, visit)

您可以在这里使用聚合

aggregate(cbind(invite,visit)~fsa, df, sum)

这将取每个fsa值的invite和visit之和。

如果您不想指定列名,并且想要快速聚合,请使用
数据。表

library(data.table)
setDT(df)[, lapply(.SD, sum), by = fsa, .SDcols=-c("id")]

##    fsa invite visit
## 1: K3M      2     2
## 2: L5N      1     0
## 3: M3T      1     0
## 4: N2P      1     1
## 5: Q3L      1     0
另一种方式:

 library(dplyr)
 df %>%
   group_by(fsa) %>%
      summarise_each(funs(sum), -1)
 #  Source: local data frame [5 x 3]

 #  fsa invite visit
 #1 K3M      2     2
 #2 L5N      1     0
 #3 M3T      1     0
 #4 N2P      1     1
 #5 Q3L      1     0

如果有两个以上的变量需要求和,可以这样做吗?在强制所有变量为数字并运行您建议的代码后,我收到以下错误消息:aggregate.data.frame(lhs,mf[-1L],FUN=FUN,…)中出错:没有要聚合的行像打字错误一样?或者您在命令中传递了错误的data.frame名称?