2015-12-01 79 views
0

我正試圖在R中完成這項工作。列2,3和4中的單元格包含大於10或'NA'的數字。由於這是已過濾的數據,因此我希望與第5,6和7列中的單元格進行交叉檢查。第5,6或7列中的數據點包含一些按字母順序排列的註釋。如果列2,3或4中的單元格包含「NA」,那麼我想將第5,6或7列中的相應單元格值轉換爲「N」或「NA」。R數據框中的條件循環

我的樣本數據如下:

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 

感謝。 傑裏

+0

只是檢查 - 你想要的輸出的第二行是錯誤的,正確的呢? –

+0

是的你是對的。我認爲它應該是N如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數據表相同的東西。 – Jerry

+0

在R中的多個列上搜索應用函數。 – Soheil