2016-08-14 8 views
0

Ich versuche, Daten aus 40k URLs zu extrahieren. URLs sind wie folgt aus:Datum aus einer Zeichenfolge (URL) extrahieren

1) ht-p://mashable.com/2014/09/19/shonda-rhimes-new-york-times/ 
2) http://mashable.com-2014/11/02/friendly-robbers-snl-sketch/ 

ich dies mit:

ymd(as.numeric(gsub("\\D", "", df$URL))) 

, die mit 1 oder 2 Aufzeichnungen fein gearbeitet, aber mit 40k Aufzeichnungen gibt es mir

Nachricht Warnung: 4714 konnte nicht analysiert werden. Es gibt NAs für diese 4714-Werte.

Fehle ich etwas?

+0

ist es num Ausgänge auf der anderen URL als Datum .. –

+1

Versuch 'ymd (as.numeric (gsub (“. */(\\ d {4}/\\ d {2}/\ \ d {2}) /.* "," \\ 1 ", df $ URL)))' –

+0

Ihre primäre Lösung funktionierte auch bei 40k-URLs sehr gut. 'urls = rep (c (" ht-p: //maschable.com/2014/09/19/shonda-rhimes-new- york-times/"," http: //mashable.com-2014/11/ 02/friendly-rabbers-snl-sketch/"), 20000)' 'datum = ymd (as.numerisch (gsub (" \\ D "," ", urls)))' –

Antwort

0

Versuchen Sie, diese

library(stringr) 
sapply(str_extract_all(string = df$URL,pattern = "[[:digit:]]+"),function(t) paste0(tail(t,n = 3),collapse = "/")) 
1

Mit str_extract Form stringr Paket:

library(stringr) 
as.Date(str_extract(txts,"[0-9]{4}/[0-9]{2}/[0-9]{2}"),"%Y/%m/%d") 
## [1] "2014-09-19" "2014-11-02" 

wo txts ist:

txts <- c("ht-p://mashable.com/2014/09/19/shonda-rhimes-new-york-times/", 
"http://mashable.com-2014/11/02/friendly-robbers-snl-sketch/") 
0

Ein paar Möglichkeiten, um die stringi Untermauerung stringr direkt mit:

library(lubridate) 
library(stringi) 
library(magrittr) 

c("ht-p://mashable.com/2014/09/19/shonda-rhimes-new-york-times/", 
    "http://mashable.com-2014/11/02/friendly-robbers-snl-sketch/") -> URLs 

URLs %>% 
    stri_extract_all_regex("([[:digit:]]{4}/[[:digit:]]{2}/[[:digit:]]{2})", simplify=TRUE) %>% 
    ymd(.[,1]) 


URLs %>% 
    stri_match_all_regex("([[:digit:]]{4}/[[:digit:]]{2}/[[:digit:]]{2})") %>% 
    lapply("[", 2) %>% 
    unlist() %>% 
    ymd() 
Verwandte Themen