无法过滤从数字转换的日期字段
问题描述:
使用R,当我查询一个SQLite数据库时,它返回一个双字段的日期字段。无法过滤从数字转换的日期字段
当我将它转换为日期字段时,它看起来不错,但我无法过滤它。这里是一个玩具例子
df <- data.frame(dbl = c(1408258800, 1409382000, 1324108800))
df$dt <- as.Date(df$dbl/(60*60*24), origin= '1970-01-01')
str(df)
# 'data.frame': 3 obs. of 2 variables:
# $ dbl: num 1.41e+09 1.41e+09 1.32e+09
# $ dt : Date, format: "2014-08-17" "2014-08-30" "2011-12-17"
df[df$dbl==1408258800,]
# dbl dt
#1 1408258800 2014-08-17
df[df$dt=="2014-08-17",]
#[1] dbl dt
#<0 rows> (or 0-length row.names)
OR
df[df$dt==as.Date("2014-08-17"),]
#[1] dbl dt
#<0 rows> (or 0-length row.names)
想我失去了一些东西很基本的无论是在获得初步结果为日期字段 或后续处理
TIA
答
as.Date
预计由于产地的天数作为输入。但是,您将其传递给十进制数字。因此:
as.numeric(df$dt[1])
#[1] 16299.29
as.numeric(as.Date("2014-08-17"))
#[1] 16299
而这些并不完全相同。我认为as.Date.numeric
应该处理这个不同或给出警告,但它不完全是一个错误。
使用整数除法来代替:
df$dt <- as.Date(df$dbl %/% (60*60*24), origin= '1970-01-01')
df[df$dt==as.Date("2014-08-17"),]
# dbl dt
#1 1408258800 2014-08-17
你尝试'as.character'?例如'df [as.character(df $ dt)==“2014-08-17”,]' – 2014-10-08 17:30:56
哎呀。看起来像这可能是明显的解决方案 – pssguy 2014-10-08 17:46:56