从数据框中提取数字

我有一个带有“计算”列的数据框,可以通过以下代码复制该数据框:

a <- data.frame(Id = c(1:3), Calculation = c('[489]/100','[4771]+[4777]+[5127]+[5357]+[5597]+[1044])/[463]','[1044]/[463]'))

> str(a)
'data.frame':   3 obs. of  2 variables:
$ Id         : int  1 2 3
$ Calculation: Factor w/ 3 levels "[1044]/[463]",..: 3 2 1

请注意,“计算”列中有两种类型的数字:大多数数字都用方括号括起来,但有些数字(在本例中为100)则不是(这在我的应用程序中具有含义)。

我想做的是提取出出现在“计算”列中的所有不同数字,以返回带有这些数字的并集的向量。理想情况下,我希望能够区分括号之间的数字和括号之间的数字。这一步不是很重要(如果很复杂的话),因为括号之间的数字很少,我可以手动检测到它们。因此,在这种情况下,所需的输出将是:

b = c(489,4771,4777,5127,5357,5597,1044,463)

提前致谢

阿克伦

我们可以使用str_extract_allfrom library(stringr)使用正则表达式lookbehind((?<=\\[)),我们匹配\\d+前面的数字,将[它们提取到中listunlist将其转换为vector,然后将其更改characternumericas.numeric),并获取unique元素。

library(stringr)
unique(as.numeric(unlist(str_extract_all(a$Calculation, '(?<=\\[)\\d+'))))
#[1]  489 4771 4777 5127 5357 5597 1044  463

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章