在具有变量实例编号的字符串中对实例求和

时间:2016-08-06 20:02:44

标签: r

我曾问过类似的问题here,但似乎无法让它在类似的情况下工作。

我有一个带有列的数据框,例如(三个单独的行):

There is some stuff here
There are 25 per hpf
There are 34 per hpf and there are 22 per hpf
There are between 23 per hpf, 12 per hpf and 15 per hpf

如果在每个hpf'

之前有一个数字,我想将最大的数字提取到一个单独的列中

我一直希望通过以下方式实现这一目标:

EoEDx$HPF<-sapply(EoEDx$HPF, function(x)
  sum(rollapply(as.numeric(str_extract_all(x, '[0-9]+per hpf')[[1]]), 3, by = 1, prod)))

但我一直收到错误:

Error during wrapup: wrong sign in 'by' argument

我想知道这是因为我预先指定了要添加的数字的数量 - 以及如何获得最大值而不是总和?

1 个答案:

答案 0 :(得分:1)

我们可以尝试

sum(rollapply(unlist(sapply(str_extract_all(df1$HPF, "[0-9]+(?= per hpf)"),
                     as.numeric)), 3, by = 1, prod))
#[1] 46116

用于提取最大数字

as.numeric(sapply(str_extract_all(df1$HPF, "[0-9]+(?= per hpf)"), 
          function(x) x[which.max(as.numeric(x))][1]))
#[1] NA 25 34 23