我正在使用该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
我不知道我在做什么错。
?month
状态:
日期时间必须是POSIXct,POSIXlt,Date,Period,chron,yearmon,yearqtr,zoo,zooreg,timeDate,xts,ti,jul,timeSeries和fts对象。
您的对象是一个因素,甚至不是字符向量(可能是因为stringsAsFactors = TRUE
)。您必须将向量转换为某些datetime类,例如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”。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句