首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >合并两个XTS对象,其中一个带有逻辑

合并两个XTS对象,其中一个带有逻辑
EN

Stack Overflow用户
提问于 2018-09-25 21:16:59
回答 2查看 34关注 0票数 1

我有两个相同维度的XTS对象,一个使用逻辑运算符(TRUE/FALSE),另一个使用整数。我尝试对整数进行子集,以便只显示逻辑运算符XTS对象为TRUE的数据点。

XTS_logical

代码语言:javascript
复制
DATE       Col1      Col2
20170630   TRUE      FALSE
20170731   FALSE     TRUE
20170831   TRUE      TRUE

XTS_integers

代码语言:javascript
复制
DATE       Col1      Col2
20170630    5         6
20170731    2         3
20170831    5         9

XTS所需结果

代码语言:javascript
复制
DATE       Col1      Col2
20170630    5         NA
20170731    NA        3
20170831    5         9
EN

回答 2

Stack Overflow用户

发布于 2018-09-25 21:52:24

您可以利用xts对象中的数据是矩阵这一事实。因此您可以只使用矩阵计算,并将XTS_logical与XTS_integers相乘

代码语言:javascript
复制
XTS_outcome <- XTS_logical * XTS_integers
XTS_outcome 
           Col1 Col2
2017-06-30    5    0
2017-07-31    0    3
2017-08-31    5    9

如果你想要0作为NA,你可以做XTS_outcome[XTS_outcome == 0] <- NA

数据:

代码语言:javascript
复制
XTS_logical <- structure(c(TRUE, FALSE, TRUE, FALSE, TRUE, TRUE), .Dim = 3:2, .Dimnames = list(
    NULL, c("Col1", "Col2")), index = structure(c(1498780800, 
1501459200, 1504137600), tzone = "UTC", tclass = "Date"), class = c("xts", 
"zoo"), .indexCLASS = "Date", tclass = "Date", .indexTZ = "UTC", tzone = "UTC")

XTS_integers <- structure(c(5L, 2L, 5L, 6L, 3L, 9L), .Dim = 3:2, .Dimnames = list(
    NULL, c("Col1", "Col2")), index = structure(c(1498780800, 
1501459200, 1504137600), tzone = "UTC", tclass = "Date"), class = c("xts", 
"zoo"), .indexCLASS = "Date", tclass = "Date", .indexTZ = "UTC", tzone = "UTC")
票数 1
EN

Stack Overflow用户

发布于 2018-09-25 22:02:37

或者直接使用XTS_logical作为要更改的单元格的索引。

代码语言:javascript
复制
XTS_integers[!XTS_logical] <- NA
#            Col1 Col2
# 2017-06-30    5   NA
# 2017-07-31   NA    3
# 2017-08-31    5    9

这样,任何原本在XTS_integers中的0都不会被更改为NA

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52499161

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档