2015-12-29 2 views
1

Я использовал пакет мышей в R, чтобы указать некоторые недостающие значения в моих данных, но не для всех переменных. Теперь я хотел бы заменить столбцы из исходных данных на столбцы из вмененных данных, если их имена столбцов равны. Вот моя функция:Заменить столбец, если те же имена столбцов R

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] 
     } 
    } 
    } 
} 

Но это не работает, любая помощь?

+0

Вы видели [этот ответ] (http://stackoverflow.com/a/9322975/1305688)? Если это не поможет вам, я предлагаю вам сделать минимальный воспроизводимый пример, чтобы согласиться с вашим вопросом. Что-то, с чем мы можем работать и использовать, чтобы показать вам, как можно решить вашу проблему. Вы можете посмотреть [это сообщение SO] (https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) о том, как сделать отличный воспроизводимый пример в R –

ответ

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)) 

Мы должны ожидать, что исходный кадр данных, чтобы изменить это «Y» и столбец «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 

Это более или менее то, что вы искали?

+1

Спасибо, это именно то, что мне нужно! Как-то определение namestoChange не сработало для меня, возможно, потому, что у моего вмененного фрейма данных было другое измерение, но я только что определил его как 'namestoChange <- colnames (вмененный)' – mrsdalloway

+0

рад, что смог помочь :) –

Смежные вопросы