R:sqldf中的日期函数提供异常的答案(错误的日期格式?) [英] R: Date function in sqldf giving unusual answer (wrong date format?)
问题描述
我正在使用sqldf添加一个日期,我知道这应该很简单,但是我无法弄清楚我的日期格式有什么问题。使用:
I am trying to add to a date using sqldf, i know it should be simple but I can't figure out what is wrong with my date format. Using:
sqldf("select date(model_date, '+1 day') from lapse_test")
给出'-4666-01-23'的答案
give's answers like '-4666-01-23'
model_date是日期格式,看起来像2015-01-01
The model_date's are in the date format and look like 2015-01-01
我以前用一个字符串('12 / 1/2015')使用
I previously made them from a character string ('12/1/2015') using
lapse_test$model_date <- as.Date(lapse_test$date1,format = "%m/%d/%Y") or
lapse_test$model_date <- as.POSIXCT(lapse_test$date1,format = "%m/%d/%Y")
我猜这是问题吗?任何想法?
I'm guessing this is the problem? Any ideas?
推荐答案
将字符变量传递给 date()
函数似乎工作:
Passing a character variable to the date()
function seems to work:
df <- data.frame(a=as.Date("2010-10-01"))
df$b <- as.character(df$a)
sqldf("select date(a) from df")
# date(a)
# 1 -4672-08-24
sqldf("select date(b) from df")
# date(b)
# 1 2010-10-01
sqldf("select date(b, '+1 day') from df")
# date(b, '+1 day')
# 1 2010-10-02
请注意,您可以直接对R中的Date对象执行(某些)算术,而不需要SQL:
Note that you can do (some) arithmetic on Date objects in R directly, without needing SQL:
df$a <- df$a + 1
df
# a b
# 1 2010-10-02 2010-10-01
这篇关于R:sqldf中的日期函数提供异常的答案(错误的日期格式?)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!