2016-08-06 85 views
0

我已經問了一個類似的問題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 

我想提取到一個單獨的列中的最大數的一個數是否存在之前「每高倍視野」

我一直希望用下面這樣做:

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

你想* *金額或*提取*? –

+0

如果以下解決方案有效,請考慮接受它。 – akrun

回答

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