2017-02-16 16 views
-2

У меня есть проблема с использованием для цикла. Моя проблема: если два столбца равны (имеют значения 176 или 184 или 180 или 182 или 163 или 167), замените два столбца = NULLСравнение двух столбцов и замена в R-пакете

Я написал сценарий, но он не работает.

for (i in dane.dzikie$REN75M10 && dane.dzikie$REN75M10.1) if (i==176 | 184 | 180 | 182 | 
                  163 | 167) {i=NULL} 

Это часть моих данных: enter image description here

Я хотел бы заменить первые, пятые и последние столбцы следует заменить на NA, поскольку обе колонки содержат 176 или 184 или 180 или 182 или 163 или 167. Условие является одинаковым значением в обоих столбцах.

+1

Просьба ознакомиться с тем, как спросить и как обеспечить воспроизводимый пример. Имейте в виду, что R векторизован. Для циклов в большинстве случаев это не ответ. – Heroka

+0

Кроме того, вы не можете использовать '|' как "или" для чисел (или '&&' для любых этих переменных), только для вещей, которые уже являются булевыми. Вместо этого используйте 'i% in% c (176, 184, ...)'. И вы не можете (легко) поместить 'NULL' в data.frame; вы, вероятно, имеете в виду «NA». – alistaire

ответ

0
# example dataframe something like this? 
dane.dzikie <- data.frame(REN75M10=c(176, 184, 5, 6, 7), 
          REN75M10.1=c(163,1,2,3,4), OTHER=c(163,2,3,4,5)) 

columns=c("REN75M10", "REN75M10.1") 
invalid.values <- c(176,184,180,182,163,167) 
dane.dzikie[,columns] <- 
    apply(dane.dzikie[,columns], 2, 
     function(x) ifelse(x %in% invalid.values, NA, x))       
+0

Он похож на мою проблему, но он должен выглядеть так: если у меня в строках два значения, например. 176 он должен заменить для NA. Только если 176 находится в двух столбцах в одной строке. –

 Смежные вопросы

  • Нет связанных вопросов^_^