【发布时间】:2020-06-18 18:10:43
【问题描述】:
假设我想将“43843”这样的数字转换为日期时间格式(从excel读取的文件,所以某些文件的日期时间格式正确;但其他人显示一个字符,例如“43875”,即1899-12-30的天数);但有些已经是日期时间类型;所以我使用 ifelse 来判断列的类型然后应用 as.posixct 函数。但它似乎不起作用。我不知道为什么。
> tt <- as.POSIXct(c("2020-1-9","2020-2-1","2020-2-8"))
> dd1 <- tibble(tt,1:3)
> ts <- c("43843","43842","43844")
> dd2 <- tibble(tt=ts,1:3)
> dd1 %>%
+ mutate(tt = ifelse(is.POSIXct(tt),tt,
+ as.POSIXct(as.Date(as.numeric(tt), origin = "1899-12-30"))))
# A tibble: 3 x 2
tt `1:3`
<dbl> <int>
1 1578499200 1
2 1578499200 2
3 1578499200 3
> dd2 %>%
+ mutate(tt = ifelse(is.POSIXct(tt),tt,
+ as.POSIXct(as.Date(as.numeric(tt), origin = "1899-12-30"))))
# A tibble: 3 x 2
tt `1:3`
<dbl> <int>
1 1578873600 1
2 1578873600 2
3 1578873600 3
【问题讨论】:
-
你从哪里得到
is.POSIXct?我没有这样的功能。 -
我很抱歉这个错误;它来自 {lubridate} package@thelatemail