如果列名称R相同,则替换列



我在R中使用了mices包来估算数据中的一些缺失值,但不是针对所有变量。现在,如果列名相等,我想用估算数据中的列替换原始数据中的这些列。这是我的功能:

 replace_imp <- function(data,impdata) {
  for(i in 1:length(impdata)){
    for(k in 1:length(data)){
      if(colnames(impdata)[i]==colnames(data)[k]){
        data[,k] <- imp_data[,i]
      }
    }
  }
}

但它似乎不起作用,有什么帮助吗?

从最小数据集开始:

original <- data.frame(X=c(1, 1, 1), Y=c(2, 2, 2), Z=c(3, 3, 3))
imputed <- data.frame(A=c(2, 2, 2), Y=c(5, 5, 5), Z=c(1, 1, 1))

我们应该期望原始数据帧将其"Y"one_answers"Z"列更改为估算值。让我们创建一个函数,它接受所有匹配的列名,对于每一个匹配,我们都将用估算的值替换原始值。

replace_imputed <- function(original, imputed){
  namestoChange <- colnames(original)[colnames(imputed) %in% colnames(original)]
  for(i in 1:length(namestoChange)){
    original[namestoChange[i]] <- imputed[namestoChange[i]]
  }
  return(original)
}
> replace_imputed(original, imputed)
  X Y Z
1 1 5 1
2 1 5 1
3 1 5 1

这或多或少是你想要的吗?

original <- data.frame(X=c(1, 1, 1), Y=c(2, 2, 2), Z=c(3, 3, 3))
imputed <- data.frame(A=c(2, 2, 2), Y=c(5, 5, 5), Z=c(1, 1, 1))
original[names(imputed)] <- imputed
X   Y   Z   A
1   5   1   2   
1   5   1   2   
1   5   1   2   

相关内容

  • 没有找到相关文章

最新更新