gsub对于r中具有不同长度的数字,并对具有相同列名的变量求和

问题描述 投票:-2回答:1

我有一个带有列名的数据框;

[1] "sample_id"                                           "seq91 Acinetobacter;junii"                          
[3] "seq157 Acinetobacter;lwoffii"                        "seq139 Acinetobacter;johnsonii-lwoffii"             
[5] "seq225 Acinetobacter;johnsonii"                      "seq224 Acinetobacter;lwoffii"                       
[7] "seq278 Acinetobacter;calcoaceticus"                  "seq327 Acinetobacter;lwoffii"                       
[9] "seq309 Acinetobacter;lwoffii"                        "seq508 Acinetobacter;ursingii"                      
[11] "seq394 Acinetobacter;haemolyticus"                   "seq540 Acinetobacter;bouvetii"                      
[13] "seq558 Acinetobacter;bouvetii"                       "seq541 Acinetobacter;lwoffii"                       
[15] "seq575 Acinetobacter;haemolyticus-johnsonii-lwoffii" "seq665 Acinetobacter;junii"                         
[17] "seq707 Acinetobacter;lwoffii"                        "seq755 Acinetobacter;haemolyticus-johnsonii-lwoffii"
[19] "seq677 Acinetobacter;marinus"                        "seq758 Acinetobacter;johnsonii"                     
[21] "seq836 Acinetobacter;junii"                          "seq768 Acinetobacter;septicus-ursingii"             
[23] "seq770 Acinetobacter;bouvetii-johnsonii"             "seq928 Acinetobacter;tjernbergiae"                  
[25] "seq864 Acinetobacter;harbinensis"                    "seq902 Acinetobacter;parvus" 

我想删除Acinetobacter之前的所有内容。但是,随着位数的变化,我无法使用gsub。另外,在那之后,我想总结具有相同名称的列的值。由于列名必须唯一,因此在除去序列号和数字后如何执行求和?我有38个不同数据帧的列表,我想在bind_rowsbind_columns之后将它们合并在一起。

r bind gsub
1个回答
1
投票

您可以尝试按照以下模式进行替换:

^.*?(?=\bAcinetobacter\b)

然后,将以上捕获的内容替换为空字符串。这是一个示例:

x <- "seq157 Acinetobacter;lwoffii"
output <- sub("^.*?(?=\\bAcinetobacter\\b)", "", x, perl=TRUE)
output

[1] "Acinetobacter;lwoffii"
© www.soinside.com 2019 - 2024. All rights reserved.