r - 在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
任何帮助,将不胜感激。谢谢。
解决方案
这个答案属于评论,但我没有足够的声誉发表评论。
格式参数as.POSIXct()
是函数将要遇到的格式,而不是最终格式。因此,您首先需要将调用调整为as.POSIXct()
:
test$C_DATE <- as.POSIXct(test$C_DATE, format = c("%m/%d/%y %H:%M"))
使用 sqldf 找到最小日期后,您可以使用format.POSIXct()
.
希望有帮助。
推荐阅读
- xamarin - 有没有办法在 Xamarin C# 中组合网格列定义
- firebase - 以编程方式访问 Firebase Analytics 趋势事件
- javascript - 如何减少下面代码中的时间直到它变为零?
- jquery - 从数据表 jquery 中的打印中删除最后一行(操作)
- reactjs - 反应 boostrap 日期范围选择器(自定义 showDropdows 属性)
- excel - 如何重命名新创建的 ActiveX 按钮?
- r - ARIMAX 外生变量反转因果关系
- python - 类型错误:使用带有字符串参数的 itemgetter 时,字符串索引必须是整数
- python - TKinter 条目验证在设置其 StringVar 后不起作用
- r - Rstudio 的 Shapiro Wilk 提到我的样本量必须在 3 到 5000 之间