r - 按日期向量对 xts 列进行子集化
问题描述
我正在尝试将列分配给另一个 xts 的 data.frame:
dts = c(today() - 2, today() - 1, today())
a = data.frame(a = c(1, 2, 3))
b = data.frame(v = c(.5, .25, 1), date = dts)
b = rbind(b, b)
a = xts(a, order.by = dts)
b$a = coredata(a$a[b$date])
这将返回:
v date a
1 0.50 2020-07-06 1
2 0.25 2020-07-07 1
3 1.00 2020-07-08 2
4 0.50 2020-07-06 2
5 0.25 2020-07-07 3
6 1.00 2020-07-08 3
如果我查看“a”列的顺序,它不符合我的预期。为了使“a”列跟随日期列(应该是 1、2、3、1、2、3),我必须更改什么
解决方案
xts
对象自动排序
a = xts(a, order.by = dts)
例如,我在 a 的末尾添加了一些东西,rbind
但它是自动排序的,它出现在开头:
rbind(a, a[1])
a
2020-07-06 1
2020-07-06 1
2020-07-07 2
2020-07-08 3
这正是您在示例中所做的。
一种解决方案是停止使用xts
对象进行此操作:
b$a = as.numeric(a)[match(b$date, date(a))]
b
v date a
1 0.50 2020-07-06 1
2 0.25 2020-07-07 2
3 1.00 2020-07-08 3
4 0.50 2020-07-06 1
5 0.25 2020-07-07 2
6 1.00 2020-07-08 3
看到这个帖子同样的问题。
推荐阅读
- asp.net-mvc - 如何将 Mvc 路由空间(如“%20”)更改为“-”
- elasticsearch - ElasticSearch 集群最终开始在搜索中返回错误的 hits.total
- javascript - 反应范围滑块值气泡
- html - 无论屏幕大小如何,如何使 svg 占据屏幕的 100%
- python-3.x - 使用python的每个小时的月平均值
- docker - 在 Rancher 上更改 docker 登录凭据
- javascript - 尝试提交一个 Javascript 表单,然后提交两个表单
- javascript - 如何在 Google App Script 中执行数组操作?
- regex - 将这些重写器添加到 .htaccess 时无法访问资产
- postgresql - 如何在运行这个 docker 容器时执行命令?