全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
1768 1
2019-04-23
数据如斯:
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来存储时间,在一些数据变换的操作中又没法用好时间的特性。

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






二维码

扫码加我 拉你入群

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

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

全部回复
2019-4-24 12:15:09
好久不用data.table有点生疏了。我觉得应该是没有更简洁的方式的
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群