【发布时间】:2019-02-27 13:13:52
【问题描述】:
我有一些小时/分钟的数据。数字与 hour_min 上的数字一样。
hour_min 是一个hms 对象。
library(dplyr)
library(lubridate)
df <- structure(list(hour_min = structure(c(NA, 69300, 46800, 35100,
52200, 37800, 52200, NA, 45300, 42300, NA, 29700, 46800, 34200,
32400, 43200, 36000, 41400, 29700, 36000), units = "secs", class = c("hms",
"difftime")), number = c(NA, 69300, 46800, 35100, 52200, 37800,
52200, NA, 45300, 42300, NA, 29700, 46800, 34200, 32400, 43200,
36000, 41400, 29700, 36000)), class = "data.frame", row.names = c(NA,
-20L), .Names = c("hour_min", "number"))
hour_min number
1 NA NA
2 19:15:00 69300
3 13:00:00 46800
4 09:45:00 35100
5 14:30:00 52200
6 10:30:00 37800
7 14:30:00 52200
8 NA NA
9 12:35:00 45300
10 11:45:00 42300
11 NA NA
12 08:15:00 29700
13 13:00:00 46800
14 09:30:00 34200
15 09:00:00 32400
16 12:00:00 43200
17 10:00:00 36000
18 11:30:00 41400
19 08:15:00 29700
20 10:00:00 36000
我想创建 30 分钟的间隔,所以我使用以下内容:如果我不使用 labels,那么它似乎可以工作......我怎样才能获得漂亮的标签。
df$interval <- cut(df$number,
breaks = seq(as.numeric(hms::as.hms("07:00:00")),
as.numeric(hms::as.hms("23:00:00")), 1800),
labels = as.character(seq(hms::as.hms("07:00:00"),
hms::as.hms("23:00:00"), 1800)))
因此,如果没有标签,我可以得到:我想数数,但需要 30 分钟。间隔。
df %>%
count(interval)
# A tibble: 11 x 2
interval n
<fct> <int>
1 (2.88e+04,3.06e+04] 2
2 (3.06e+04,3.24e+04] 1
3 (3.24e+04,3.42e+04] 1
4 (3.42e+04,3.6e+04] 3
5 (3.6e+04,3.78e+04] 1
6 (3.96e+04,4.14e+04] 1
7 (4.14e+04,4.32e+04] 2
8 (4.5e+04,4.68e+04] 3
9 (5.04e+04,5.22e+04] 2
10 (6.84e+04,7.02e+04] 1
11 <NA> 3
但我需要标签.. 解决方案?
【问题讨论】: