我通过查询SQL在R中生成了一个包含一列日期的数据框。代码的那部分工作正常,但是当我尝试选择数组的索引项1和6时,我得到了错误的结果。例如,如果数据框产生以下结果:
1 2014-11-17;
2 2014-11-14;
3 2014-11-13;
4 2014-11-12;
5 2014-11-11;
6 2014-11-10;
7 2014-11-07;
8 2014-11-06;
9 2014-11-05;
10 2014-11-04;
11 2014-11-03
我想要元素1和6,但是当我尝试时,它返回2014-11-16元素1(TestDate)而不是2014-11-17和元素6(ValDate)我得到2014-11-09而不是2014-11-10。这是我到目前为止编码的方式:
Today <- Sys.Date()
LookBack <- as.Date(Sys.Date()-14, format = "%y-%m-%d")
Sql1 <- paste("SELECT DISTINCT Date",
" FROM dbo.Example_Database",
" WHERE Date BETWEEN '",LookBack,"' AND '",Today,"'",
" ORDER BY Date desc",sep="")
DateArray = data.frame(sqlQuery(dbConnection1,Sql1))
TestDate <- as.Date(DateArray[1,1])
ValDate <- as.Date(DateArray[6,1])
答案 0 :(得分:0)
问题是日期是在EST时间,并且R将它们转换为GMT,因此索引将提取正确的日期,转换意味着其值是在EST时间早1天。 您可以使用函数as.POSIXct检查时区,即
> as.POSIXct(DateArray[1,1])
[1] "2014-11-18 EST"
为避免转换为GMT时间,我使用了
> TestDate <- as.Date(DateArray[1,1], tz = "")
这将返回我要查找的日期,即数据框中显示的日期,而不是转换为GMT时间。