R中的装箱时间

R中的装箱时间,r,R,我的数据集如下所示: datetime Normaltime --------- ---------- 1443446880 2015-09-28 06:28:00 1443450600 2015-09-28 07:30:00 1443451740 2015-09-28 07:49:00 一列是UNIX时间,另一列是正常时间 我想为不同的时间窗口创建4个新列,我将如何创建这些列 我希望它看起来像这样 datetime Normaltime

我的数据集如下所示:

datetime     Normaltime
---------    ----------
1443446880   2015-09-28 06:28:00
1443450600   2015-09-28 07:30:00
1443451740   2015-09-28 07:49:00
一列是UNIX时间,另一列是正常时间

我想为不同的时间窗口创建4个新列,我将如何创建这些列

我希望它看起来像这样

datetime     Normaltime             Daypart
---------    ----------            ---------
1443446880   2015-09-28 06:28:00    Morning
1443450600   2015-09-28 07:30:00    Morning
1443451740   2015-09-28 07:49:00    Morning
1443468600   2015-09-28 12:30:00    Afternoon
谢谢

您可以尝试(使用Gregor的提示):

库(lubridate)
df$Daypart您可以尝试(使用Gregor提示):

库(lubridate)
df$Daypart使用基数R:

df$Daypart <- ifelse( format( as.POSIXct( df$Normaltime ),"%H" ) >= "00" & format( as.POSIXct( df$Normaltime ),"%H" ) < "06", "Overnight",
ifelse( format( as.POSIXct( df$Normaltime ),"%H" ) >= "06" & format( as.POSIXct( df$Normaltime ),"%H" ) < "09","Morning",
ifelse( format( as.POSIXct( df$Normaltime ),"%H" ) >= "09" & format( as.POSIXct( df$Normaltime ),"%H" ) < "16", "Afternoon","Prime")
df$Daypart=“00”和格式(如.POSIXct(df$Normaltime),“%H”)<“06”,“隔夜”,
ifelse(格式为.POSIXct(df$Normaltime),“%H”)>=“06”和格式为.POSIXct(df$Normaltime),“%H”)<“09”,“早晨”,
ifelse(格式为.POSIXct(df$Normaltime),%H“>=“09”和格式为.POSIXct(df$Normaltime),%H“<“16”,“下午”,“主要”)
使用基本R:

df$Daypart <- ifelse( format( as.POSIXct( df$Normaltime ),"%H" ) >= "00" & format( as.POSIXct( df$Normaltime ),"%H" ) < "06", "Overnight",
ifelse( format( as.POSIXct( df$Normaltime ),"%H" ) >= "06" & format( as.POSIXct( df$Normaltime ),"%H" ) < "09","Morning",
ifelse( format( as.POSIXct( df$Normaltime ),"%H" ) >= "09" & format( as.POSIXct( df$Normaltime ),"%H" ) < "16", "Afternoon","Prime")
df$Daypart=“00”和格式(如.POSIXct(df$Normaltime),“%H”)<“06”,“隔夜”,
ifelse(格式为.POSIXct(df$Normaltime),“%H”)>=“06”和格式为.POSIXct(df$Normaltime),“%H”)<“09”,“早晨”,
ifelse(格式为.POSIXct(df$Normaltime),%H“>=“09”和格式为.POSIXct(df$Normaltime),%H“<“16”,“下午”,“主要”)
你可以用一种相当简单的方式来做

#     datetime          Normaltime
# 1 1443446880 2015-09-28 05:59:59
# 2 1443446880 2015-09-28 06:00:00
# 3 1443446880 2015-09-28 06:28:00
# 4 1443450600 2015-09-28 07:30:00
# 5 1443451740 2015-09-28 07:49:00
# 6 1443451780 2015-09-28 15:00:00
# 7 1443451780 2015-09-28 16:00:00

df$Daypart = (c('overnight', 'morning', 'afternoon', 'prime')
               [findInterval(hour(df$Normaltime), c(-Inf, 6, 9, 16, Inf))])

#     datetime          Normaltime   Daypart
# 1 1443446880 2015-09-28 05:59:59 overnight
# 2 1443446880 2015-09-28 06:00:00   morning
# 3 1443446880 2015-09-28 06:28:00   morning
# 4 1443450600 2015-09-28 07:30:00   morning
# 5 1443451740 2015-09-28 07:49:00   morning
# 6 1443451780 2015-09-28 15:00:00 afternoon
# 7 1443451780 2015-09-28 16:00:00     prime
你可以用一种相当简单的方式来做

#     datetime          Normaltime
# 1 1443446880 2015-09-28 05:59:59
# 2 1443446880 2015-09-28 06:00:00
# 3 1443446880 2015-09-28 06:28:00
# 4 1443450600 2015-09-28 07:30:00
# 5 1443451740 2015-09-28 07:49:00
# 6 1443451780 2015-09-28 15:00:00
# 7 1443451780 2015-09-28 16:00:00

df$Daypart = (c('overnight', 'morning', 'afternoon', 'prime')
               [findInterval(hour(df$Normaltime), c(-Inf, 6, 9, 16, Inf))])

#     datetime          Normaltime   Daypart
# 1 1443446880 2015-09-28 05:59:59 overnight
# 2 1443446880 2015-09-28 06:00:00   morning
# 3 1443446880 2015-09-28 06:28:00   morning
# 4 1443450600 2015-09-28 07:30:00   morning
# 5 1443451740 2015-09-28 07:49:00   morning
# 6 1443451780 2015-09-28 15:00:00 afternoon
# 7 1443451780 2015-09-28 16:00:00     prime

你的意思是创建新的列
Daypart
,其中包含4个不同的小时窗口值?这些窗口是什么?哦,是的,一列,4个Daypart.0-6,6-9,9-4,4-11:59你想如何标记这四个部分?隔夜,上午,下午,全天,respectively@Gregor这是一个很好的提示。我在我的回答中已经提到了。你的意思是创建新的专栏
Daypart
有4个不同的小时窗口值?这些窗口是什么?哦,是的,一列,4个Daypart.0-6,6-9,9-4,4-11:59您想如何标记这四个部分?隔夜,上午,下午,全天,respectively@Gregor这是一个很好的暗示。我在我的回答中暗示了这一点。