首页 > 解决方案 > 在R中将整数转换为日期并使用sqldf按日期排序

问题描述

我正在尝试在 R 中加载具有 USERID 和日期的数据集。我正在尝试使用 sqldf 提取用户 ID 的 MIN(DATE),但结果似乎有问题。

我使用 posixct 转换了日期列并检查了 typeof 列,它显示为双精度(在转换之前它是整数)

test$C_DATE <- as.POSIXct(test$C_DATE, format = c("%m-%d-%Y %H:%M"))
minDate <- sqldf("SELECT U_ID,MIN(C_DATE) AS FTrans FROM test WHERE U_ID = 'ABC' GROUP BY U_ID")

预期的输出应该是

U_ID FTrans
ABC  12/20/2017  5:00:47 PM

但我明白了

U_ID FTrans
ABC  1507631400

我尝试使用 SQL 中的合并日期函数作为以下查询

minDate <- sqldf("SELECT U_ID,DATE(MIN(C_DATE),'unixepoch','localtime') AS FTrans FROM test WHERE U_ID = 'ABC' GROUP BY U_ID")

但是我得到了错误的日期和错误的格式。

U_ID FTrans
ABC  2017-10-10

样本数据

UID    C_DATE
ABC    10/11/15 9:05
ABC    10/11/15 20:08
DEF    10/11/15 11:37
GHI    10/11/15 20:08
JKL    10/11/15 2:46

理想情况下,对于用户 ABC,我想要第一个记录的数据(MIN DATE),即 10/11/15 9:05

任何帮助,将不胜感激。谢谢。

标签: rsqldf

解决方案


这个答案属于评论,但我没有足够的声誉发表评论。

格式参数as.POSIXct()是函数将要遇到的格式,而不是最终格式。因此,您首先需要将调用调整为as.POSIXct()

test$C_DATE <- as.POSIXct(test$C_DATE, format = c("%m/%d/%y %H:%M"))

使用 sqldf 找到最小日期后,您可以使用format.POSIXct().

希望有帮助。


推荐阅读