我的数据集中有以下列。
TENURE
April 30, 1789 – March 3,1797
March 4, 1797 - March 3, 1801
March 4, 1841 - April 4, 1841[Died]
March 4, 1881 - September 19, 1881[Assassinated]
January 20, 1969 - August 9, 1974[Resigned]
...
...
我已将数据集加载到一个数据框中,其中一列名为TENURE。 现在我想再制作两个名字" Start"和"结束"基于TENURE.Those然后将两个新列包含在我的数据帧中。 两列的结果看起来像这样
Start End
1789 1797
1797 1901
1841 1841
1881 1881
1969 1974
到目前为止,我已经完成了以下
require(XML)
require(stringr)
urlPresidents<-"http://www.theholidayspot.com/july4/us_presidents.htm"
presidents <- readHTMLTable(urlPresidents,which = 3,
skip.rows = 1,header = TRUE,
stringsAsFactors=FALSE)
yearList <- str_split(presidents$TENURE,pattern = ",",n = 1)
我受到打击而没有得到如何处理?
答案 0 :(得分:2)
你可以str_extract_all
并匹配全部数字编号,在这种情况下它可以工作。
r <- str_extract_all(presidents$TENURE, "\\d{4}")
df <- data.frame(start = sapply(r, "[", 1), end = sapply(r, "[", 2))
head(df)
## start end
## 1 1789 1797
## 2 1797 1801
## 3 1801 1809
## 4 1809 1817
## 5 1817 1825
## 6 1825 1829
答案 1 :(得分:2)
我认为可以分三步完成:
将2日期字符串分成两部分
Posts
将字符串转换为日期对象
a <- c('March 4, 1797 - March 3, 1801','March 4, 1841 - April 4, 1841[Died]')
a_devided <- strsplit(a,' - ')
从日期中提取年份:
a_devided_dates <- lapply(a_devided, function(x) as.Date( x, '%B %d, %Y') )