R中使用update函数处理survey.design对象的均值计算异常问题
解决survey.design对象中用update创建行均值变量的问题
这是个很容易踩的小坑!你当前代码里的mean(c(x1,x2,x3))逻辑不对——它会把x1、x2、x3三个向量的所有值拼接成一个长向量,计算整个数据集的全局均值,所以每个观测都会得到完全相同的结果。
正确的两种解决方式:
用
rowMeans()按行计算均值(适合变量较多的场景)
先通过cbind()把三个变量组合成每行对应三个值的矩阵,再用rowMeans()逐行计算均值:testsvy <- update(testsvy, avg = rowMeans(cbind(x1, x2, x3)))手动计算行均值(适合变量较少的场景)
直接对每行的三个变量求和后除以变量个数,逻辑更直观:testsvy <- update(testsvy, avg = (x1 + x2 + x3)/3)
验证结果
运行完上述代码后,你可以查看新变量确认效果:
testsvy$variables$avg
此时每个观测的avg都会对应自身行内x1、x2、x3的平均值,而不是全局统一的数值。
内容的提问来源于stack exchange,提问作者processing_statistician
相关产品推荐
相关产品推荐

