我有以下用户统计数据框:
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)
转换VisitTime为POSIXct格式,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)