2016-08-06 8 views
0

Ich hatte eine ähnliche Frage here gestellt, aber scheint nicht in der Lage zu sein, es für eine ähnliche Situation zu arbeiten.Summieren von Instanzen in einer Zeichenfolge mit variabler Instanznummer

Ich habe einen Datenrahmen mit einer Säule wie (drei getrennte Reihen):

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 

ich die größte der Zahlen in einer separaten Spalte extrahieren möchten, ob eine Zahl vorhanden ist, bevor ‚pro HPF‘

ich habe gehofft, dass dies mit den folgenden Funktionen ausführen:

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

aber ich erhalte die Störung zu erhalten:

Error during wrapup: wrong sign in 'by' argument 

und ich frage mich, ob dies ist, weil ich die Anzahl der Zahlen vor-angeben bin - auch wie man das Maximum anstelle der Summe erhält?

+0

Sie die größten Zahlen extrahieren möchten * bis * Summe * oder * Extrakt? –

+0

Wenn die folgende Lösung funktioniert, denken Sie bitte daran, sie zu akzeptieren. – akrun

Antwort

1

Wir

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

versuchen Für

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