Я пытаюсь заменить некоторые отсутствующие значения в моих данных на средние значения из аналогичной группы.
Мои данные выглядят следующим образом:
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. Любые идеи?