我尝试使用gsub解决此问题,但这太困难了。我不知道如何告诉函数只返回某些数字,而不返回其他数字。
我的问题:
我有一个很大的数据框,其中每个执行的测试都有一列test.comments。它是一大段文本,其中只有某些数字是我感兴趣的。
例:
**对BK病毒有积极作用**解释:在该患者标本中,每毫升尿液检测到18,900,000,000 BKV基因组当量/ ...... ................................................... ................................................... ...................... 10个测试样本中的1个...有问题请致电555-122-634
我想做的是在单独的列中添加值18,900,000,000(而不是电话号码和其他随机数)。
有时,数字用_______括起来:
**对BK病毒呈阳性**解释:检测到每毫升__33,400,000 ____ BK病毒(BKV)基因等效量
在某些情况下,数量也很少:
在该患者标本中检测到每毫升900 BK病毒(BKV)基因组当量
要么
**对BK病毒有积极作用**解释:在该患者标本中,每毫升检测到的计算得出的____
我希望有一个可以返回的健壮命令
189亿
33,400,000
900
这也将有助于我拥有一个仅返回数字> 1,000的命令,并且我可以手动编辑其他情况。
但是必须有一个更优雅的解决方案?
编辑:
感谢大家的帮助,Sven的解决方案最适合我!
最佳答案
这是sub
的可能解决方案:
sub(".*?([<>]?[,0-9]+)[ _]+BK.*", "\\1", vec)
# [1] "18,900,000,000" "33,400,000" "900" "<250"
其中
vec
是包含4个示例的向量。