我正在尝试从40k网址中提取日期。 网址是这样的:
1) ht-p://mashable.com/2014/09/19/shonda-rhimes-new-york-times/
2) http://mashable.com-2014/11/02/friendly-robbers-snl-sketch/
我正在使用它:
ymd(as.numeric(gsub("\\D", "", df$URL)))
在1或2条记录中运行良好,但有40k记录,它给了我
警告讯息: 4714未能解析。它为这些4714值提供了NA。
我错过了什么吗?
答案 0 :(得分:2)
使用str_extract
表单stringr
包:
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"
其中txts
是:
txts <- c("ht-p://mashable.com/2014/09/19/shonda-rhimes-new-york-times/",
"http://mashable.com-2014/11/02/friendly-robbers-snl-sketch/")
答案 1 :(得分:0)
试试这个
library(stringr)
sapply(str_extract_all(string = df$URL,pattern = "[[:digit:]]+"),function(t) paste0(tail(t,n = 3),collapse = "/"))
答案 2 :(得分:0)
直接使用stringi
stringr
基础的几种方式:
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()