在R中将因子格式转换为小时和分钟格式

时间:2017-05-15 19:03:27

标签: r

我有一个因子格式的列。

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

提前致谢。

2 个答案:

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