2016-05-03 4 views
1

Ich habe Vektor mit zwei Elementen. Jedes Element enthält eine Zeichenkette mit zwei Datensätzen. Ich muss das letztere von diesen zwei Daten, , extrahieren und einen neuen Vektor oder eine Liste mit ihnen machen.Extrahiere Daten aus einem Vektor von Zeichenketten

#webextract vector 
webextract <- list("The Employment Situation, December 2006  January 5 \t 8:30 am\r","The Employment Situation, January 2007  \tFeb. 2, 2007\t 8:30 am   \r") 

#This is how the output of webextract looks like: 
[[1]] 
[1] The Employment Situation, December 2006  January 5 \t 8:30 am\r 

[[2]] 
[1] The Employment Situation, January 2007  \tFeb. 2, 2007\t 8:30 am   \r 

webextract das Ergebnis der Bahn ist eine URL mit Klartext Schaben, das ist, warum es so aussieht. Was ich extrahieren muss, ist "5. Januar" und "2. Februar". Ich experimentierte mit grep und strsplit und konnte nirgendwohin gelangen. Habe alle zugehörigen SO-Fragen ohne Erfolg durchlaufen. Danke für Ihre Hilfe.

+0

'gsub ('+ \\ s {3} (. + \\ d +?). *',‚\\ 1 ', unlist (webextract)) 'oder' stringr :: str_extract (unlist (webextract),' (? <= \\ s {4}) \\ w. +? \ \ d + ') ', vielleicht – alistaire

Antwort

1

können wir versuchen, mit gsub nach unlist ing das 'WebExtract'

gsub("^\\D+\\d+\\s+|(,\\s+\\d+)*\\D+\\d+:.*$", "", unlist(webextract)) 
#[1] "January 5" "Feb. 2" 
+0

Danke, dass Sie uns bestätigt haben . "^ \\ D + \\ d + \\ s + | (, \\ s + \\ d +) * \\ D + \\ d +:. * $" Stellt das Muster dar, richtig? – Krug

+1

@Gracos Ja, es stellt das Muster dar, das mit der Zeichenfolge übereinstimmen und daraus entfernt werden soll. dh ein oder mehrere nicht-numerische ('\ D +'), gefolgt von numerischen ('\\ d +') gefolgt von Leerzeichen ('\\ s +') entfernt die "Beschäftigungssituation, Dezember 2006" oder '|', falls vorhanden sind Zeichen ',' gefolgt von Leerzeichen gefolgt von Ziffern in einigen Strings, wir verwenden null oder mehr ('*') gefolgt von nicht numerisch ('\\ D +'), numerisch ('\\ d +') gefolgt von ': 'und der Rest der Zeichen bis zum Ende ('. * $ '). Das '' '' 'ist mit dem' '' '' 8: 30' – akrun

+0

übereinzustimmen, wie wirst du das "\ t" vor Feb loswerden? Es ist der einzige Teil, den ich nicht verstehe. Danke vielmals! – Krug