在 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
我有一个看起来像这样的 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