我曾问过类似的问题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
我想知道这是因为我预先指定了要添加的数字的数量 - 以及如何获得最大值而不是总和?
答案 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