按特定标准对数据进行分组

djM*_*hit 1 grouping r dplyr

我有以下用户统计数据框:

ID    User      VisitTime
1     Ra          08:00
1     Ma          15:13
2     Da          20:15
2     La          11:00
Run Code Online (Sandbox Code Playgroud)

如何创建一个数据框,其中包含另一列名为“标签”的列来显示上午、下午和晚上的时间?我参考了 Stackoverflow 上的一些帖子并使用过dplyr group_by,但未能产生预期的结果。

基本上我正在寻找这个数据框:

ID    User      VisitTime    Label
1     Ra          08:00      Morning 
1     Ma          15:13      Evening
2     Da          20:15      Night
2     La          11:00      Morning 
Run Code Online (Sandbox Code Playgroud)

Ron*_*hah 5

转换VisitTimePOSIXct格式,hour从中提取,定义“早上”、“下午”、“晚上”和“晚上”并分配标签。

library(dplyr)

df %>%
  mutate(time = as.POSIXct(VisitTime, format = "%H:%M"), 
         hour = as.integer(format(time, '%H')), 
         Label  = case_when(between(hour, 6, 11) ~ "Morning", 
                            between(hour, 12, 15) ~"Afternoon", 
                            between(hour, 16, 19) ~"Evening", 
                            TRUE ~"Night"))
Run Code Online (Sandbox Code Playgroud)