我正在使用lubridate
封装并应用month
从日期中提取月份的函数。我在日期字段上运行了 str 命令,得到了
Factor w/ 9498 levels "01/01/1979","01/01/1980",..: 5305 1 1 1 1 1 1 1 1 1 ...
> v1$Date<-month(v1$Date)
Error in as.POSIXlt.character(as.character(x), ...) :
character string is not in a standard unambiguous format
这是我的数据框的示例
https://drive.google.com/file/d/0B6cqWmwsEk20Q2dHblhXZi14Wk0/edit?usp=sharing https://drive.google.com/file/d/0B6cqWmwsEk20Q2dHblhXZi14Wk0/edit?usp=sharing
我不知道我做错了什么。
?month
states:
日期时间必须是 POSIXct、POSIXlt、Date、Period、chron、yearmon、
yearqtr、zoo、zooreg、timeDate、xts、its、ti、jul、timeSeries 和 fts
对象。
你的对象是一个因素,甚至不是一个字符向量(大概是因为stringsAsFactors = TRUE
)。您必须将向量转换为某些日期时间类,例如POSIXlt
:
library(lubridate)
some_date <- c("01/02/1979", "03/04/1980")
month(as.POSIXlt(some_date, format="%d/%m/%Y"))
[1] 2 4
还有一个便利功能dmy
,可以做同样的事情(@Henrik 提出的提示):
month(dmy(some_date))
[1] 2 4
更进一步,@IShouldBuyABoat 给出了另一个提示,即无需任何显式转换即可接受 dd/mm/yyyy 字符格式:
month(some_date)
[1] 2 4
有关格式列表,请参阅?strptime
。你会发现“标准明确格式”代表
默认格式遵循 ISO 8601 国际标准的规则
标准,将一天表示为“2001-02-28”,将时间表示为
“14:01:02”使用前导零,如下所示。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)