我想知道为什么以下dplyr::mutate_if()
不起作用?
flights_df
格式的日期创建S3: POSIXct
here
flights <- nycflights13::flights
make_datetime_100 <- function(year, month, day, time) {
make_datetime(year, month, day, time %/% 100, time %% 100)
}
flights_df <- flights %>%
sample_n(100) %>%
filter(!is.na(dep_time), !is.na(arr_time)) %>%
mutate(
dep_time = make_datetime_100(year, month, day, dep_time),
arr_time = make_datetime_100(year, month, day, arr_time),
sched_dep_time = make_datetime_100(year, month, day, sched_dep_time),
sched_arr_time = make_datetime_100(year, month, day, sched_arr_time)) %>%
dplyr::select(origin, dest, ends_with("delay"), ends_with("time"))`
现在使用mutate_if()
将日期转换为字符here
flights_df %>% as_tibble() %>% mutate_if(is.Date, as.character)
答案 0 :(得分:0)
您正在处理POSIXct / xt对象。
class(flights_df$arr_time[1])
[1] "POSIXct" "POSIXt"
如果您使用is.POSIXct
,则转换有效 flights_df %>%
as_tibble() %>%
mutate_if(is.POSIXct, as.character)