使用mutate_if()将S3:POSIXct变量转换为R中的字符(chr)变量

时间:2017-11-30 20:28:48

标签: r dplyr

我想知道为什么以下dplyr::mutate_if()不起作用?

  1. 使用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"))`
  2. 现在使用mutate_if()将日期转换为字符here

    flights_df %>% as_tibble() %>% mutate_if(is.Date, as.character)

1 个答案:

答案 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)