我有一个小组,每个小组都有人。和一个指标。如何为每个人元素的每个组计算指标?
group person ind
1 1 1
1 1 1
1 2 1
2 1 0
2 2 1
2 2 1
group count
1 2
2 1
答案 0 :(得分:1)
您可以使用tapply()
:
dat <- data.frame("group" = c(1, 1, 1, 2, 2, 2),
"ind" = c(1, 0, 0, 1, 0, 1))
tapply(dat$ind, dat$group, sum)
编辑#1
为了更好地说明OP,请将组1视为“ A”,将组2视为“ B”
dat <- data.frame("group" = c("A", "A", "A", "B", "B", "B"),
"ind" = c(1, 0, 0, 1, 0, 1))
tapply(dat$ind, dat$group, sum)
您得到以下结果
A B
1 2
编辑#2
鉴于OP的修订问题,使用tapply()
的基本R解决方案:
tapply(dat$ind, list(dat$group, dat$person), sum)
行是组,列是人:
1 2
1 2 1
2 0 2
答案 1 :(得分:1)
也许dplyr解决方案可能会有所帮助?
编辑:基于评论,您是否希望每个组中ind为1的人数?
--cli-input-json my_file.json
或者:
dat <- data.frame("group" = c(1, 1, 1, 2, 2, 2),
"person" = c(1, 1, 2, 1, 2, 2),
"ind" = c(1, 1, 1, 0, 1, 1))
library(dplyr)
dat %>%
distinct(group, person, ind) %>%
group_by(group) %>%
summarize(count = sum(ind))