如何计算每个组元素的指标?

时间:2019-08-03 00:26:04

标签: r dataframe

我有一个小组,每个小组都有人。和一个指标。如何为每个人元素的每个组计算指标?

     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

2 个答案:

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