R数据帧中的条件循环

时间:2015-12-01 23:51:06

标签: r if-statement

我试图在R中完成此操作。第2,3和4列中的单元格包含大于10或“NA”的数字。由于这已经过滤了数据,我想与第5,6和7列中的单元格进行交叉检查。第5,6或7列中的数据点包含一些按字母顺序排列的注释。如果第2,3或4列中的单元格包含' NA',那么我想将第5,6或7列中的相应单元格值转换为' N'或者' NA'。

我的样本数据如下:

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

提前致谢。 杰里

1 个答案:

答案 0 :(得分: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