Заполните столбец значениями в зависимости от другого столбца в пределах фрейма данных - PullRequest
0 голосов
/ 01 июня 2018

У меня есть два столбца, a и b (длина столбцов составляет около 85 000).b пусто, а заполнено различными значениями.Если значения находятся в списке c, тогда b необходимо заполнить «Да».Если значения находятся в списке d, тогда b необходимо заполнить «Нет».Если их нет ни в одном списке, то b можно оставить пустым или заполнить NA (на самом деле это не имеет значения).Прямо сейчас у меня есть цикл for с операторами if, if else и else.Хотя это работает, это не быстро (занимает около 20 секунд).Есть ли способ сделать это с помощью векторных операций, чтобы ускорить его?Заранее спасибо!

for (i in 1:length(a)){
    if(is.element(df$a[i],c) == TRUE){
      df$b[i] <- "Yes"
    }
    else if (is.element(df$a[i],d) == TRUE){
      df$b[i] <- "No"
    }
    else{
      df$b[i] <- NA
    }
  }

1 Ответ

0 голосов
/ 01 июня 2018

Если вы создаете два отдельных вектора, один из индексов, где a находится в c, и один в индексах, где a находится в d.

in.c <- which(df$a %in% df$c)
in.d <- which(df$a %in% df$d)

Тогда вы можете обновить b в соответствии с этими векторами

df$b[in.c] <- 'Yes'
df$b[in.d] <- 'No'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...