【发布时间】:2017-08-29 20:04:50
【问题描述】:
我无法弄清楚如何修剪数据框中字符串的结尾。
我想将所有内容修剪为一个“基本”名称,在#s 和字母之后,一个句点,然后是一个数字。我的目标是将我的数据框中的所有内容都修剪为这个“基础”名称,然后将这些值与相同的“基础”相加。我在想有可能修剪,然后合并和求和这些值。
ie/
Gene_name Values
B0222.5 4
B0222.6 16
B0228.7.1 2
B0228.7.2 12
B0350.2h.1 30
B0350.2h.2 2
B0350.2i 15
2RSSE.1a 3
2RSSE.1b 10
R02F11.11 4
到
Gene_name Values
B0222.5 4
B0222.6 16
B0228.7 14
B0350.2 47
2RSSE.1 13
R02F11.11 4
感谢您的帮助!
【问题讨论】:
-
使用这个正则表达式
([[:alnum:]]+\.[[:digit:]]+)(或([a-zA-Z0-9]+\.[0-9]+)- 两者是等效的)捕捉你的“基本”名称,然后根据匹配减少你的数组。正则表达式不能轻松执行计算(如果你设法让它工作,这不是真的可行,而且更像是一种黑客攻击) -
可能最简单的方法是使用正则表达式匹配创建一个新数组(默认值为 0),然后使用循环根据每个连续匹配添加到该数组键。我对 R 不熟悉,但这就是我在大多数其他语言中的工作方式。
a= [[B0222.5, 4], ..., [B0228.7.1, 2], [B0228.7.2, 12], ...]=> 循环每个键/值对 => 第一个匹配 =B0222.5=>b=[[B0222.5, 4]]=> ... => 第三个匹配 =B0228.7=> b =[[B0222.5, 4], ..., [B0228.7, 2]]=> 第四个匹配 =@ 987654330@ => b =[[B0222.5, 4], ..., [B0228.7, 14]]等