在 data.frame 个日期中查找每个单元格的小时数

Find hour for each cell in a data.frame of Dates

我有一个看起来像这样的 data.frame:

library(lubridate)
df <- data.frame(date1= dmy_hms(c("06.08.2019 10:00:04", "07.08.2019 12:21:08")),
                 date2= dmy_hms(c("06.08.2019 11:22:17", "07.08.2019 17:44:09")))
df
                date1               date2
1 2019-08-06 10:00:04 2019-08-06 11:22:17
2 2019-08-07 12:21:08 2019-08-07 17:44:09

我想要一个包含每个单元格小时的数据框:

expected_df <- data.frame(hour1= c(10, 12),
                          hour2= c(11, 17))
expected_df
  hour1 hour2
1    10    11
2    12    17

我已经尝试了不同的方法,例如lapply(1:nrow(df),function(nrow_i){hour(df[nrow_i, ])})lapply(split(df, 1:nrow(df)), hour),但到目前为止,其中none有效。

所以基本上你需要一个循环。从基础 lapply 到方便的 purr::map 系列循环的大量选项,例如

library(lubridate)
library(purrr)
map_dfc(df, hour)

# # A tibble: 2 x 2
#   date1 date2
#   <int> <int>
# 1    10    11
# 2    12    17

base中:

setNames(format(df, "%H"), c("hour1", "hour2"))

  hour1 hour2
1    10    11
2    12    17

看看Date Formats in R