2015-12-01 3 views
0

Я пытаюсь сделать это в R. Ячейки столбцов 2,3 и 4 содержат числа больше 10 или «NA». Поскольку это уже отфильтрованные данные, я хочу перекрестно проверять ячейки в столбцах 5, 6 и 7. В столбцах 5, 6 или 7 столбцы данных содержат некоторые алфавитные аннотации. Если ячейки в столбцах 2,3 или 4 содержат «NA», тогда я хочу преобразовать соответствующие значения ячеек в столбцы 5, 6 или 7 как «N» или «NA».условная петля в R dataframe

Мои данные выборки выглядит следующим образом:

ID S1 S2 S3 S4 S5 S6 
M1 11 20 NA C C C 
M2 NA 123 21 T T R 
M3 NA NA 27 A A M 
M4 65 23 NA G G C 
M5 12 NA 13 T G C 

Мой требуемый выход ::

ID S1 S2 S3 S4 S5 S6 
M1 11 20 NA C C N 
M2 NA 123 21 T N R 
M3 NA NA 27 N N M 
M4 65 23 NA G G N 
M5 12 NA 13 T N C 

Спасибо заранее. Jerry

+0

Просто проверяю - вторая линия нужного выхода неправильно, правильно? –

+0

да, вы правы. Я думаю, что это должно быть N T R – Jerry

ответ

1

Вы можете попробовать это:

library(data.table) 
data <- as.data.table(list(ID=c("M1","M2"), S1=c(11,NA), s4=c("C", "T"))) 

# ID S1 s4 
#1: M1 11 C 
#2: M2 NA T 

data[, s4 := ifelse(is.na(S1), NA, s4)] 

# ID S1 s4 
#1: M1 11 C 
#2: M2 NA NA 
+0

, как написать то же самое для 200 x 200 datatable. – Jerry

+0

Поиск применения функции на нескольких столбцах в R. – Soheil

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