将 %B.%Y 转换为日期 return R 中的 NA
Convert %B.%Y to date return NA in R
我有一个数据框,其中有一列包含日期内容(该列的数据类型为字符):'November.2017', 'April.2017', etc.
我尝试用下面的代码转换它们以进行测试:
strptime(c('November.2017', 'April.2017'), format='%B.%Y')
zoo::as.yearmon(c('November.2017', 'April.2017'), '%B.%Y')
as.Date(c('November.2017', 'April.2017'), format='%B.%Y')
输出:
[1] NA NA
[1] "Nov 2017" "Apr 2017"
[1] NA NA
如你所见,只有zoo::as.yearmon
行得通,谁能帮忙分析一下为什么会这样?谢谢。
据我搜索,这个问题似乎是由 time-zone
提出的,我 运行 Sys.setlocale('LC_TIME', 'English')
在 Rstudio 上,它不起作用。
已更新:
strptime(c('November.01.2017', 'April.01.2017'), format='%B.%d.%Y')
as.Date('November.01.2017', format="%B.%d.%Y")
输出:
[1] "2017-11-01 CST" "2017-04-01 CST"
[1] "2017-11-01"
一个选项也是parse_date
library(parsedate)
parse_date((c('November.2017', 'April.2017')))
[1] "2017-11-01 UTC" "2017-04-01 UTC"
输出为POSIXct
class。可以用as.Date
直接转换成Date
class
as.Date(parse_date((c('November.2017', 'April.2017'))))
[1] "2017-11-01" "2017-04-01"
我有一个数据框,其中有一列包含日期内容(该列的数据类型为字符):'November.2017', 'April.2017', etc.
我尝试用下面的代码转换它们以进行测试:
strptime(c('November.2017', 'April.2017'), format='%B.%Y')
zoo::as.yearmon(c('November.2017', 'April.2017'), '%B.%Y')
as.Date(c('November.2017', 'April.2017'), format='%B.%Y')
输出:
[1] NA NA
[1] "Nov 2017" "Apr 2017"
[1] NA NA
如你所见,只有zoo::as.yearmon
行得通,谁能帮忙分析一下为什么会这样?谢谢。
据我搜索,这个问题似乎是由 time-zone
提出的,我 运行 Sys.setlocale('LC_TIME', 'English')
在 Rstudio 上,它不起作用。
已更新:
strptime(c('November.01.2017', 'April.01.2017'), format='%B.%d.%Y')
as.Date('November.01.2017', format="%B.%d.%Y")
输出:
[1] "2017-11-01 CST" "2017-04-01 CST"
[1] "2017-11-01"
一个选项也是parse_date
library(parsedate)
parse_date((c('November.2017', 'April.2017')))
[1] "2017-11-01 UTC" "2017-04-01 UTC"
输出为POSIXct
class。可以用as.Date
Date
class
as.Date(parse_date((c('November.2017', 'April.2017'))))
[1] "2017-11-01" "2017-04-01"