我有一个因子格式的列。
12:07:35
09:35:20
14:10:15
15:50:03
09:35:20
14:10:15
12:50:03
我想将因子列格式转换为小时和分钟格式。然后按小时分组。
09:00
12:00
14:00
15:00
提前致谢。
答案 0 :(得分:1)
如果我想要那个输出,我会使用lubridate包和一些基本R日期处理的组合,如下所示:
library(lubridate)
library(dplyr)
df <- tribble(~timestamp,
"12:07:35",
"09:35:20",
"14:10:15",
"15:50:03",
"09:35:20",
"14:10:15",
"12:50:03")
df %>%
mutate(timestamp = as.POSIXct(timestamp, format = "%H:%M:%S"),
timestamp = floor_date(timestamp, unit = "1 hour"),
timestamp = sprintf("%02d:00", hour(timestamp)))
#> # A tibble: 7 x 1
#> timestamp
#> <chr>
#> 1 12:00
#> 2 09:00
#> 3 14:00
#> 4 15:00
#> 5 09:00
#> 6 14:00
#> 7 12:00
如果您想要最近的小时,请使用round_date()
而不是floor_date()
。
答案 1 :(得分:0)
基于我对您的问题的理解
library(dplyr)
List=c('12:07:35'
,'09:35:20'
,'14:10:15'
,'15:50:03'
,'09:35:20'
,'14:10:15'
,'12:50:03')
List=as.factor(List)
List=data.frame(List)
List1 = List %>%
mutate(MIN=substr(List,1,5), HOUR=substr(List,1,2)) %>%
group_by(HOUR) %>%
count()
> List1
# A tibble: 4 × 2
HOUR n
<chr> <int>
1 09 2
2 12 2
3 14 2
4 15 1