将数值转换为R [重复]中的日期格式

k97glaaz  于 2023-06-19  发布在  其他
关注(0)|答案(1)|浏览(125)

此问题已在此处有答案

as.Date(as.POSIXct()) gives the wrong date?(2个答案)
4天前关闭。
我在R中有一个ifelse语句,它处理日期值。Date 1和Date 2是日期格式(yyyy-mm-dd),但date_new生成为数字(如1630627200)。为什么这个结果值这么大?我尝试了as.Date + origin将数字转换为日期,但结果没有正确的4位数年份(结果类似于“4466475-08-21”)。错误的year值很可能是由date_new的巨大值引起的。

library(lubridate)
df$date_new <- ifelse(is.na(df$date1), df$date2, df$date1)
df$date_new <- as.Date(df$date_new, origin=lubridate::origin)

我该怎么解决?谢谢

f87krz0w

f87krz0w1#

R中处理日期字段的IFELSE语句将生成一个新的数值变量。下面的代码可以将其转换为日期格式(YYYY-mm-dd)。

library(lubridate)
df$date_new <- ifelse(is.na(df$date1), df$date2, df$date1)
df$date_new <- as.Date(as.character(as.POSIXct(df$date_new, origin=lubridate::origin)))
#This also works: 
as.Date(as.POSIXct(df$date_new,origin ="1970-01-01", tz = "GMT"))

有时由于时区问题,结果日期可能会有一天。上面的代码运行良好。

相关问题