【问题标题】:Create function to count occurrences within groups in R创建函数以计算 R 中组内的出现次数
【发布时间】:2021-11-06 06:02:50
【问题描述】:

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

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

这是我的尝试。我需要 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 值。

谢谢

【问题讨论】:

标签: r function for-loop sum subset


【解决方案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
    

【讨论】:

    【解决方案2】:

    在基础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
    

    【讨论】:

      猜你喜欢
      • 2023-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-18
      相关资源
      最近更新 更多