R使用mutate()创建多变量均值新变量结果全为NA问题求助
代码错误原因
- 第一个错误:
mean()函数中传入的是带双引号的"v1"~"v6"字符串,而非数据框内的数值变量,对字符串计算数值均值会直接返回NA。 - 第二个错误:基础
mean()函数默认计算所有传入值的全局均值,即使去掉引号,运行后所有行的intp.trust也会是同一个全局固定值,无法实现你要的每行6个变量的独立行均值需求。
正确实现方案
优先使用效率更高的rowMeans()写法:
library(dplyr) evs <- mutate(evs, intp.trust = rowMeans(across(c(v1, v2, v3, v4, v5, v6)), na.rm = TRUE))
如果偏好更直观的行级计算逻辑,也可以用rowwise()语法:
library(dplyr) evs <- evs %>% rowwise() %>% mutate(intp.trust = mean(c(v1, v2, v3, v4, v5, v6), na.rm = TRUE)) %>% ungroup() # 取消行分组,避免影响后续数据处理
参数说明:na.rm = TRUE代表计算均值时自动忽略行内的缺失值,如果你需要只要对应行有一个变量为缺失,均值就返回NA,可以删除这个参数。
内容的提问来源于stack exchange,提问作者Xingchen LIU
相关产品推荐
相关产品推荐

