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