在for循环中使用条件的最快方法

 收藏

因此,对于数据集bornwt,我想要由吸烟的母亲出生且出生时年龄在20岁以下的低体重婴儿所占的百分比。换句话说,我想要年龄<20且烟气== 1的体重(体重)<2600。

我运行下面三个代码块,它们实际上为您提供了正确的答案:

 # new df with the conditions
new_df <- subset(birthwt, age<20 & smoke==1)

 #for loop to calculate the low weight

low_weight <- 0
for (i in 1:length(new_df$bwt)){
  if(bwt[i] < 2600){
    low_weight <- low_weight + 1
  }
}

 #low weight for the original dataset
low_weight_tot <- 0
attach(birthwt)
for (i in 1:length(birthwt$bwt)){
  if(bwt[i] < 2600){
    low_weight_tot <- low_weight_tot + 1
  }
}

print(low_weight/low_weight_tot)*100

但是我觉得这很繁琐,是否还有其他更简单的使用循环的方法?

谢谢!

回复
  • 您不需要为此的循环:

    library(dplyr)
    birthwt %>% 
      summarise(perc = mean(if_else(age < 20 & smoke == 1 & bwt < 2600, 1, 0)))