R - применение условий данных о времени для получения значений до и после определенного момента времени - PullRequest
0 голосов
/ 19 июня 2019

В моем фрейме данных у меня есть поле данных даты и времени.Формат выглядит следующим образом:

2019-05-26 06:34:35

То есть 26th May 2019 Morning 6:34 AM.Я хочу применить условия, при которых, если время раньше, чем 6:00 утра, - применить условия к отчету, а если время больше 8:00, применить другое условие.

if (df$timestamp <= 06:00) {
then condition
} elseif (df$timestamp >= 08:00 {
then some other condition
}

Когда я использую strptimeя могу извлечь только часть времени даты, но только как символ, где я не могу применить эти логические условия.

Ниже приведен формат данных

structure(list(Store = c("VPM", "VPM", 
"VPM"), Date = structure(c(18042, 18042, 18042), class = "Date"), 
    UniqueImageId = c("vp3_523", "vp3_668", "vp3_523"), EntryTime = structure(c(1558835514, 
    1558834942, 1558835523), class = c("POSIXct", "POSIXt")), 
    ExitTime = structure(c(1558838793, 1558838793, 1558839824
    ), class = c("POSIXct", "POSIXt")), Duration = c(3279, 3851, 
    4301), Age = c(35L, 35L, 35L), Gender = c("Male", "Male", 
    "Male"), EntryPoint = c("Entry2Side", "Entry2Side", "Entry2Side"
    ), ExitPoint = c("Exit2Side", "Exit2Side", "Exit2Side")), class = c("data.table", 
"data.frame"), row.names = c(NA, -3L), .internal.selfref = <pointer: 0x2f9b050>)

1 Ответ

1 голос
/ 19 июня 2019

Может быть, это поможет, если использовать библиотеку lubridate, которая очень интуитивно понятна.Я использовал EntryTime, но вы можете применить его к любому столбцу даты:

library(lubridate)
# it's arleady as date, so you can do this
dats$time_if <- ifelse(hour(dats$EntryTime)<= 6,'a',
                       ifelse(hour(dats$EntryTime) >= 8,'b','c' ))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...