创建函数以计算 R 中组内的出现次数

Create function to count occurrences within groups in R

我有一个名为 match_no 的患者组具有唯一 ID 的数据集,我想通过 运行 循环函数来计算两个不同年份有多少患者生病在大型数据集中

for (i in db$match_no){(with(db, sum(db$TBHist16 == 1 & db$match_no == i))}

这是我的尝试。我需要循环遍历每个匹配编号并计算出现了多少 TB。

谁能纠正我的公式。

此处示例

df1 <- data.frame(Match_no = c(1, 1,1,1,1,2,2,2,2,2, 3,3,3,3,3, 4,4,4,4,4, 5,5,5,5,5),
                  var1 = c(1,1,1,0,0,1,1,1,0,0,0,1,1,1,1,1,0,0,0,1,1,1,1,0,1))

我想统计每个匹配号中有多少个1值。

谢谢

一些想法:

  1. 所有Match_no值的简单总结:

    xtabs(~var1 + Match_no, data = df1)
    #     Match_no
    # var1 1 2 3 4 5
    #    0 2 2 1 3 1
    #    1 3 3 4 2 4
    
  2. 与 1 相同,但有一个子集:

    xtabs(~ Match_no, data = subset(df1, var1 == 1))
    # Match_no
    # 1 2 3 4 5 
    # 3 3 4 2 4 
    
  3. 一帧结果:

    aggregate(var1 ~ Match_no, data = subset(df1, var1 == 1), FUN = length)
    #   Match_no var1
    # 1        1    3
    # 2        2    3
    # 3        3    4
    # 4        4    2
    # 5        5    4
    

在基础 R 中,您可以使用 aggregatesum:

aggregate(var1 ~ Match_no, data = df1, FUN = sum)

  Match_no var1
1        1    3
2        2    3
3        3    4
4        4    2
5        5    4