根据R中的Timestamp设置新的分类变量值

时间:2017-09-15 11:59:32

标签: r

我的数据框有两列 Date_Time ENTRY 。   Date_Time 包含 2个月的小时数据,我需要使用R中的逻辑填充条目列值。  在逻辑上   - >仅在上午10点至上午12点期间输入应设置为“FULL”。 下午2点至下午5点   - >参赛作品应设置为“EMPTY”不包括小时上午10点到上午12点& 下午2点至下午5点

预期输出快照

   **Date_Time**    **ENTRY**
    6/6/17 6:00 AM  EMPTY
    6/6/17 7:00 AM  EMPTY
    6/6/17 8:00 AM  EMPTY
    6/7/17 9:00 AM  EMPTY
    6/8/17 10:00 AM FULL
    6/9/17 11:00 AM FULL
    6/9/17 12:00 AM FULL
    6/9/2017 13:00 AM   EMPTY
    6/9/2017 14:00 AM   FULL
    6/9/2017 15:00 AM   FULL
    6/9/2017 16:00 AM   FULL
    6/9/2017 17:00 AM   FULL
    6/9/2017 18:00 AM   EMPTY

1 个答案:

答案 0 :(得分:1)

使用data.table的解决方案(假设您的表名为d):

library(data.table)
setDT(d)
d[, AMPM := sapply(strsplit(Data_Time, " "), "[[", 3)]
d[, TIME := as.numeric(gsub(":.*", "", sapply(strsplit(Data_Time, " "), "[[", 2)))]
d[, ENTRY := "EMPTY"]
d[(AMPM == "AM" & TIME >= 10 & TIME <= 12) | 
  (AMPM == "PM" & TIME >= 2 & TIME <= 5), 
  ENTRY := "FULL"][, .(Data_Time, ENTRY)]

enter image description here