시간 값을 범주 값으로 변경
Aug 21 2020
현재 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" ))
답변
1 RonakShah Aug 21 2020 at 13:37
Time
입니다 period
클래스입니다. 그것에서 시간을 추출하고 다음에서 사용하십시오 case_when
.
library(dplyr)
df %>%
mutate(hour = Time@hour,
Time_of_day = case_when(
hour <= 6 ~ "Night",
hour <= 10 ~ "Morning",
hour <= 14 ~ "Midday",
hour <= 18 ~ "Afternoon",
hour > 19 ~ "Night"))
1 DarrenTsai Aug 21 2020 at 13:42
이 열 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
1 akrun Aug 22 2020 at 02:45
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")))