部分字符串匹配R的列的总和

时间:2016-02-10 19:51:54

标签: r string sum data.table match

我想根据字符串值

的部分匹配添加两列
a <- c("ChrM","ChrM","ChrM","ChrM","ChrM")
b <- c(5,6,7,10,11)
c <- c(0,0,3,0,1)
d <- c(2,1,0,1,0)

dfa <- data.table(a, b, c, d) 
colnames(dfa) <- c("ID","pos","cr H-MN-8A","cr H-MN-8B")
#I don't know how to make a column name with a string value (with " " and "_")
  ID     pos        cr H-MN-8A cr H-MN-8B
1 ChrM   5          0          2
2 ChrM   6          0          1
3 ChrM   7          3          0
4 ChrM  10          0          1
5 ChrM  11          1          0

我希望能够根据它们的部分字符串匹配“cr H-MN-8”添加最后2列“cr H-MN-8A”,“cr H-MN-8B”,然后写出结果同时将其与值进行比较,因此返回为true或false。 我有类似于

的东西
dfa <- lapply(dfa, function(x) x[, newval := as.numeric(col1+col2>=1)])

我有两个以上的字符串匹配标题(它们都在同一个数据帧上配对)。有任何想法吗?谢谢!

(不知道它是否相关,但我正在使用data.table

1 个答案:

答案 0 :(得分:3)

我们可以尝试以下data.table方法

dfa[,`H-MN-8` := as.numeric(rowSums(.SD) > 1), .SDcols = grep("cr H-MN-8", names(dfa))]

dfa
#     ID pos cr H-MN-8A cr H-MN-8B H-MN-8
#1: ChrM   5          0          2      1
#2: ChrM   6          0          1      0
#3: ChrM   7          3          0      1
#4: ChrM  10          0          1      0
#5: ChrM  11          1          0      0