楼主: 无恤
1458 1

[问答] 关于data.table时间索引的问题 [推广有奖]

  • 3关注
  • 0粉丝

高中生

77%

还不是VIP/贵宾

-

威望
0
论坛币
681 个
通用积分
0.1014
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
104 点
帖子
13
精华
0
在线时间
49 小时
注册时间
2011-11-5
最后登录
2023-9-19

楼主
无恤 在职认证  发表于 2019-4-23 18:05:28 |只看作者 |坛友微信交流群|倒序 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
数据如斯:
n <- 30date <- as.Date("2019-04-01") + 0:(n-1)dd <- data.table(date = date,                 v1 = 1:n,                 v2 = rnorm(n))
设置date为索引:
dd <- setkey(dd, date)
用通常的方法来索引一行:
dd[date == "2019-04-07"]
由于date本身就是索引,所以更为简洁的方式应该是:
dd["2019-04-07"]

但却报错:

Error in bmerge(i, x, leftcols, rightcols, xo, roll, rollends, nomatch, :

typeof x.date (double) != typeof i.V1 (character)

看起来是因为在用dd["2019-04-07"]形式时,没能将时间字符转换为Date的底层实际类型double。而dd[date == "2019-04-07"]时,应该是自动转换了。

虽然后者的索引方式能够解决问题,但还是感到不够简洁。当然了,如果时将Date类型转为character类型,是可以用dd["2019-04-07"]的方式来索引的,但是这样以character来存储时间,在一些数据变换的操作中又没法用好时间的特性。

不知有没有什么更为优雅的办法来解决问题?






二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Table Data ABLE ABL tab

沙发
Whig 在职认证  发表于 2019-4-24 12:15:09 |只看作者 |坛友微信交流群
好久不用data.table有点生疏了。我觉得应该是没有更简洁的方式的

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-25 16:49