R语言中用for循环批量为DataFrame列赋值失败的问题求助
问题原因及解决方法
问题核心:你的
for(i in 345)只让循环执行一次(仅处理第345行),并没有遍历数据框的所有行,这就是大部分行仍为NA的原因。修复循环的写法:
要遍历所有行,需要让i覆盖从1到数据框总行数的索引,代码如下:for(i in 1:nrow(df_37wks)) { if (df_37wks$qchat_total[[i]] > 38) { df_37wks$qchat_group[[i]] <- 1 } else { df_37wks$qchat_group[[i]] <- 0 } }更高效的R风格写法(推荐):
R是向量化语言,用循环处理数据框效率较低,直接用ifelse函数可以一行完成赋值:df_37wks$qchat_group <- ifelse(df_37wks$qchat_total > 38, 1, 0)如果你习惯用tidyverse工具链,也可以用
dplyr的mutate:library(dplyr) df_37wks <- df_37wks %>% mutate(qchat_group = ifelse(qchat_total > 38, 1, 0))
内容的提问来源于stack exchange,提问作者Katie Jobson
相关产品推荐
相关产品推荐

