我有一个数据框df,其列为DateTimeUTC。
ID DateTimeUTC
A 12/4/2019 11:30:30 PM
A 12/4/2019 11:30:30 PM
B 12/5/2019 11:30:30 PM
B 12/5/2019 11:30:30 PM
B 12/5/2019 11:30:30 PM
我想过滤,以便DateTimeUTC只显示12/5/2019的日期,结果如下:
ID DateTimeUTC
B 12/5/2019 11:30:30 PM
B 12/5/2019 11:30:30 PM
B 12/5/2019 11:30:30 PM
我已经尝试过此命令,但是没有成功:
library('dplyr')
library('lubridate')
data %>% filter as.Date(DateTimeUTC == "2019-12-05")
我想要2019年12月5日的所有日子,包括时间(小时,分钟和秒) 这可能吗?
答案 0 :(得分:4)
此处,“ DateTimeUTC”的格式不同。将列转换为DateTime类(似乎格式为month-day-year-year-hour-minute-second),并使用as.Date
删除时间,然后进行比较(==
)>
library(dplyr)
library(lubridate)
data %>%
filter(as.Date(mdy_hms(DateTimeUTC)) == "2019-12-05")
# ID DateTimeUTC
#1 B 12/5/2019 11:30:30 PM
#2 B 12/5/2019 11:30:30 PM
#3 B 12/5/2019 11:30:30 PM
在OP的代码中,as.Date
应用于逻辑矢量,该逻辑矢量无论如何都是FALSE
,因为它将原始格式与其他格式进行比较,这将导致执行代码失败即
"12/4/2019 11:30:30 PM" == "2019-12-05"
#[1] FALSE
为此as.Date
包装会导致错误
as.Date("12/4/2019 11:30:30 PM" == "2019-12-05")
as.Date.default(“ 12/4/2019 11:30:30 PM” ==“ 2019-12-05”)中的错误:
不知道如何转换'“ 12/4/2019 11:30:30 PM” ==“ 2019-12-05”' 将“日期”分类
data <- structure(list(ID = c("A", "A", "B", "B", "B"),
DateTimeUTC = c("12/4/2019 11:30:30 PM",
"12/4/2019 11:30:30 PM", "12/5/2019 11:30:30 PM", "12/5/2019 11:30:30 PM",
"12/5/2019 11:30:30 PM")), class = "data.frame", row.names = c(NA,
-5L))