如何解决将时间值突变为分类值
我当前有一个带有字符形式时间戳的数据框,我已将其转换为HMS
df$Time <- hms(df$Time)
我正在尝试更改数据集,使其包含一天中的某个时间的分类列
ReceiptNo Time
99 14H 53M 55S
98 14H 53M 43S
97 14H 53M 28S
96 14H 53M 8S
95 14H 52M 53S
94 14H 52M 1S
93 14H 51M 41S
92 14H 51M 15S
91 14H 51M 0S
90 14H 50M 42S
我尝试了以下各种变体来突变新列,但没有成功
df %>%
mutate(Time = case_when(
Time <= 6 ~ "Night",Time <= 10 ~ "Morning",Time <= 14 ~ "Midday",Time <= 18 ~ "Afternoon",Time > 19 ~ "Night" ))
解决方法
npm i angular-ui-carousel
是Time
类的。从中提取小时,然后在period
中使用它:
case_when
,
列Time
属于类<Period>
,它记录了从00:00:00
开始经过的秒数。您需要将这些时间点转换为<Period>
个对象。
library(dplyr)
library(lubridate)
df %>%
mutate(Time2 = case_when(
Time <= hours(6) ~ "Night",Time <= hours(10) ~ "Morning",Time <= hours(14) ~ "Midday",Time <= hours(18) ~ "Afternoon",TRUE ~ "Night" ))
# # A tibble: 6 x 3
# ReceiptNo Time Time2
# <chr> <Period> <chr>
# 1 101 14H 54M 35S Afternoon
# 2 102 14H 54M 51S Afternoon
# 3 103 14H 55M 5S Afternoon
# 4 104 14H 55M 26S Afternoon
# 5 105 14H 56M 13S Afternoon
# 6 106 14H 57M 43S Afternoon
,
在case_when中可以使用带有标签的cut时,不要使用多个条件。
library(dplyr)
df %>%
mutate(Time2 = cut(Time@hour,breaks = c(-Inf,6,10,14,18,Inf),labels = c("Night","Morning","Midday","Afternoon","Night")))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。