提问人:ap21 提问时间:5/12/2022 最后编辑:jay.sfap21 更新时间:5/12/2022 访问量:621
如何使用 'as 将“数字字符串”转换为日期对象。日期()'?
How to convert "numeric string" to a date object using `as.Date()`?
问:
我在数据框中有一个日历日期列表,格式如下:
20000110
20000117
20000124
该标准为2000-01-10、2000-01-17、2000-01-24等。
但是,使用
df %>% mutate(date= as.Date(df$data, format = "%Y%m%d") )
不起作用。它弹出一个错误,要求我提供一个 ,这是 的可选输入。如果我随后提供列表中的第一个日期作为原点,它会给我完全错误的日期:origin
as.Date()
df %>% mutate(date= as.Date(df$data, format = "%Y%m%d", origin="20000110") )
答:
0赞
ap21
5/12/2022
#1
我找到了答案。诀窍是使用库的功能:lubridate
ymd()
df %>% mutate(date= lubridate::ymd(df$data) )
这非常有效!
评论
1赞
Dirk Eddelbuettel
5/12/2022
另外:a) 在需要时进行转换,b) 不需要格式提示(对于像这样的“理智”输入格式)。为了完整起见,这也有效:.anytime::anydate(c(20000110, 20000117, 20000124))
as.Date(as.character(c(20000110, 20000117, 20000124)), "%Y%m%d")
1赞
jay.sf
5/12/2022
#2
你的日期是类的,所以被调度,它有第二个参数。所以你所要做的就是强制调度,它有所需的参数。"numeric"
as.Date.numeric
origin=
as.character
as.Date.character
format=
transform(df, date=as.Date(as.character(date), '%Y%m%d'))
# date
# 1 2000-01-10
# 2 2000-01-17
# 3 2000-01-24
通常,1970 年 1 月 1 日,即所谓的 Unix 纪元,数字是从那时起的天数(以秒为单位)。origin=
"date"
"POSIXt"
as.Date(as.numeric(Sys.Date()))
# Error in as.Date.numeric(as.numeric(Sys.Date())) :
# 'origin' must be supplied
as.Date(as.numeric(Sys.Date()), origin='1970-01-01')
# [1] "2022-05-12"
显然,这对你的数字来说是没有意义的。
数据:
df <- structure(list(date = c(20000110, 20000117, 20000124)), class = "data.frame", row.names = c(NA,
-3L))
评论