基于子字符串拆分配对样本

时间:2016-01-12 12:12:29

标签: r substring stringr

我有两组配对样本,可以用前两个字母分隔。我想基于配对使用[tn][abc]

之类的东西制作两组
Example of paired samples:
nb-008  ta-008
na015   ta-015

数据:

    > colnames(data)
      "nb-008"  "nb-014"  "na015"   "na-018"  "ta-008"   "tc-014"  "ta-015"  "ta-018"  

  patient <- factor(sapply(str_split(colnames(data), '[tn][abc]'), function(x) x[[1]]))

1 个答案:

答案 0 :(得分:1)

我们可以使用sub创建分组变量。我们匹配字符串(..)后面的2个字符(^)的模式,后跟-(如果存在),后跟一个或多个字符({{1} })我们捕获为一个组(在括号内),并由反向引用(.*)替换。这可用于\\1列名称。

split

数据

split(colnames(data), sub('^..-?(.*)', '\\1', colnames(data))))
#$`008`
#[1] "nb-008" "ta-008"

#$`014`
#[1] "nb-014" "tc-014"

#$`015`
#[1] "na015"  "ta-015"

#$`018`
#[1] "na-018" "ta-018"