R: заменить NA элементом из вектора

Я пытаюсь заменить некоторые отсутствующие значения в моих данных средними значениями из аналогичной группы.

Мои данные выглядят так:

   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. Есть идеи?

8
задан Krantz 12 September 2019 в 05:20
поделиться