【发布时间】:2021-06-24 13:55:15
【问题描述】:
我有一个包含三个子量表的问卷数据集。如果某个子尺度连续缺少数据,我想用行平均值替换该特定列值。
对于示例数据,我想表现得好像只有一个子量表,由 c1 和 c2 组成。
c1 <- c(1,2,3,NA,4)
c2 <- c(1,NA,45,4,100)
c3 <- c(NA,2,3,9,NA)
data <- data.frame(c1,c2,c3)
我尝试了几件事,但都没有奏效。
for(i in 1:nrow(data[,c(1,2)])){
for(n in 1:ncol(data[,c(1,2)])){
if(is.na(data[,c(1,2)][i,n])){
data[,c(1,2)][i,n] <- mean(t(data[,c(1,2)][i,]), na.rm = T)}}}
#Version 2
k <- which(is.na(data[,c(1,2)]),arr.ind=TRUE)
data[,c(1,2)][[k]] <- rowMeans(data[,c(1,2)],na.rm=TRUE)[k[,1]]
对于版本 1,替换了具有一个 NA 的列中的所有值。对于版本 2,它显示了一条错误消息。
非常感谢您的帮助。
PS:这是一个编码问题(与方法的统计适当性无关)。
【问题讨论】: