我的数据框有两列 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
答案 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)]