【问题标题】:How to write for loop to count frequency in specific row如何编写for循环以计算特定行中的频率
【发布时间】:2020-02-10 09:52:01
【问题描述】:

我想按年龄组计算特定行的频率,步骤是: 1.“pud”的数据框,当“icd3”的列满足以下条件时 2. 选择符合条件的行,统计频率。

代码如下:

u2<-which(pud$icd3>="A00"&pud$icd3<="A99"|
              pud$icd3>="B00"&pud$icd3<="B94"|
              pud$icd3=="B99")
u3<-which(pud$icd3>="A00"&pud$icd3<="A99"|
            pud$icd3>="B00"&pud$icd3<="B49"|
            pud$icd3>="B90"&pud$icd3<="B94"|
            pud$icd3=="B99")
for (i in 2:3){co[i]=addmargins(table(pud[u[i],]$agegroups))}

但输出面板代表:

for (i in 2:3){co[i]=addmargins(table(pud[u[i],]$agegroups))}

[.data.frame(pud, u[i], ) 中的错误:找不到对象“u”

如何调整代码?

【问题讨论】:

  • 欢迎来到 StackOverflow!请阅读有关how to ask a good question 的信息以及如何提供reproducible example。这将使其他人更容易帮助您。
  • u 未找到,因为u 尚未生成...
  • 我建议使用case_when 将您的条件编码到pud 的新变量(列)中。然后group_by 新列和tallyiris 示例:iris_condition &lt;- iris %&gt;% mutate(category = case_when(Species == "setosa" &amp; Petal.Length &lt; 4.5 ~ "Small Setosa", Species == "versicolor" &amp; Petal.Length &lt; 4.5 ~ "Small versicolor", TRUE ~ "General category")) iris_condition %&gt;% group_by(category) %&gt;% tally()

标签: r loops for-loop


【解决方案1】:

如果你想要频率,为什么不这样做呢?

sum(pud$icd3>="A00"&pud$icd3<="A99"|
              pud$icd3>="B00"&pud$icd3<="B94"|
              pud$icd3=="B99")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-25
    • 2014-10-21
    • 2019-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多