R 润滑轮 ymd_hms 至 imd_hm

R lubridate round ymd_hms to imd_hm

我的数据框中有一个带有日落时间 (ymd_hms) 的变量,我想将其四舍五入到最近的分钟数。

我试过以下方法,但我的日期(POSIXct 格式)没有改变。

    head(df$sunset)
    [1] "2018-07-22 00:20:54 UTC" "2018-07-22 00:20:54 UTC" "2018-07-22 00:20:54 UTC" "2018-07-08 00:24:32 UTC"
    [5] "2018-07-08 00:24:33 UTC" "2018-07-08 00:24:33 UTC"

        output <- df %>%
          mutate(lubridate::round_date(sunset, unit="hour")

    head(output$sunset)
    [1] "2018-07-22 00:20:54 UTC" "2018-07-22 00:20:54 UTC" "2018-07-22 00:20:54 UTC" "2018-07-08 00:24:32 UTC"
[5] "2018-07-08 00:24:33 UTC" "2018-07-08 00:24:33 UTC"

我需要添加什么才能让它工作?

您需要在 mutate 中分配更改。如果您不在 mutate 中使用分配,dplyr 将创建一个与您的整个函数相同的 header 列。

df %>% 
  mutate(rounded_dates = lubridate::round_date(sunset, unit="minute"))

不带赋值和带赋值的 mutate 示例,见最后的列名:

iris %>% 
  mutate(Sepal.Length + Sepal.Width)

    Sepal.Length Sepal.Width Petal.Length Petal.Width    Species Sepal.Length + Sepal.Width
1            5.1         3.5          1.4         0.2     setosa                        8.6
2            4.9         3.0          1.4         0.2     setosa                        7.9
.....


iris %>% 
   mutate(addition = Sepal.Length + Sepal.Width)

    Sepal.Length Sepal.Width Petal.Length Petal.Width    Species addition
1            5.1         3.5          1.4         0.2     setosa      8.6
2            4.9         3.0          1.4         0.2     setosa      7.9