2017-03-06 3 views
0

Ich habe eine Spalte von Strings (und NAs) in einem Datensatz, dessen Werte wie folgt aussehen:R mit Sonderzeichen

"85min" "1hr 19min" "98min" NA "119min" "105min" NA "1hr 30min" 

Ich versuche, alle Werte zu Numerik (in Minuten) zu ändern, so dass die Werte wie folgt aussehen:

85 79 98 NA 119 105 NA 90 

ich es von Stücken zu tun versucht, zuerst die „min“ Entfernen sie dann die „hr“ zu entfernen und dann „1“ bis „60“ ändern und dann die mittlere Veränderung Leerzeichen zu Pluszeichen, geben Sie mir:

"85" "60+19" "98" NA "119" "105" NA "60+30" 

Ich hatte gehofft, dass ich durch die Anwendung von as.numeric die mit "+" - Zeichen zu Formeln umwandeln würde, aber stattdessen ergaben sie nur NAs.

Gibt es einen Kurzschreibweise für diese Art der Konvertierung? Vielen Dank im Voraus!

+0

Verwandte: [Von Zeitspanne zum Beispiel „15 min“ oder „2 sec“ auf „00.15.00“ oder „00.00.02“ mit bestehende R-Funktion] (http://stackoverflow.com/questions/8204878/from-timespan-for-example15-min-or-2-sec-to-001500-or-000002-usin) und [Alter eingeben als 'X Wochen, Y Tage, Z Stunden' in R] (http://stackoverflow.com/questions/32744743/convert-age-enter-as-x-weeks-y-days-z-hours-in-r ? noredirect = 1 & lq = 1) – Henrik

Antwort

0

Ja, Sie brauchen parse und eval

strings = c("85", "60+19", "98", NA, "119", "105", NA, "60+30") 
sapply(parse(text=strings), eval) 
[1] 85 79 98 NA 119 105 NA 90 
+0

Ja, genau das habe ich gesucht. Ich danke dir sehr. Ich wünschte nur, ich hätte vor Tagen gefragt ... –