Есть ли способ изменить значение строки на основе диапазона столбцов данных? - PullRequest
0 голосов
/ 09 июля 2019

У меня есть фрейм данных с большим количеством столбцов (172) и множеством строк, и мне нужно изменить значение одного столбца на основе диапазона столбцов в одном и том же фрейме данных.

COL1  COL2 COL3 ... COL17 ...
1           
2           X
3                d
4                    98          

Впредыдущий кадр данных, я хотел бы изменить значение COL2 на «ошибка», если ЛЮБОЙ столбцов в диапазоне от COL3 до COL17 имеет какое-либо значение.Ожидаемый результат будет:

    COL1  COL2    COL3 ... COL17 ...
     1           
     2    error    X
     3    error        d
     4    error              98          

Как видно выше, первая строка не получает ошибок, потому что нет никаких значений между COL3 и COL17, но другие строки получают ошибку в COL2, так как есть значения либо в COL3,COL17 или любой столбец между этими 2.

Я знаю, что могу достичь этого с ifelse(), но число строк, которые мне нужно проверить, довольно велико (диапазон составляет приблизительно 50 столбцов), поэтомуifelse() утверждение было бы ужасно, к тому же я не думаю, что оно было бы очень эффективным.

Заранее спасибо за любую помощь.

1 Ответ

1 голос
/ 09 июля 2019

Вы можете paste значения столбца, а затем проверить наличие пустых значений с помощью ifelse:

#Creating a sample dataframe
df <- data.frame(Col1 = c(1:4), Col2 = c("","","",""), Col3 = c("", "X", "", ""), Col4 = c("", "", "D", ""), Col5 = c("","", "", 98))
df
  Col1 Col2 Col3 Col4 Col5
1    1                    
2    2         X          
3    3              D     
4    4                  98

#pasting the column values and adding "error" if the paste is not empty
df$Col2 <- ifelse(do.call(paste, c(df[c(3:5)], sep="")) == "", "ok", "error")
df
  Col1  Col2 Col3 Col4 Col5
1    1    ok               
2    2 error    X          
3    3 error         D     
4    4 error             98
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...