Я пытаюсь заменить некоторые пропущенные значения в моих данных средними значениями из аналогичной группы.
Мои данные выглядят так:
X Y
1 x y
2 x y
3 NA y
4 x y
И я хочу, чтобы это выглядело так:
X Y
1 x y
2 x y
3 y y
4 x y
Я написал это, и это сработало
for(i in 1:nrow(data.frame){
if( is.na(data.frame$X[i]) == TRUE){
data.frame$X[i] <- data.frame$Y[i]
}
}
Но мой data.frame имеет длину почти полмиллиона строк, а операторы for / if довольно медленные. Я хочу что-то вроде
is.na(data.frame$X) <- data.frame$Y
Но получается ошибка несоответствующего размера. Кажется, что должна быть команда, которая делает это, но я не могу найти ее здесь в SO или в справочном списке R. Есть идеи?