我想根据字符串值
的部分匹配添加两列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
答案 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