我有两个相同维度的XTS对象,一个使用逻辑运算符(TRUE/FALSE),另一个使用整数。我尝试对整数进行子集,以便只显示逻辑运算符XTS对象为TRUE的数据点。
XTS_logical
DATE Col1 Col2
20170630 TRUE FALSE
20170731 FALSE TRUE
20170831 TRUE TRUEXTS_integers
DATE Col1 Col2
20170630 5 6
20170731 2 3
20170831 5 9XTS所需结果
DATE Col1 Col2
20170630 5 NA
20170731 NA 3
20170831 5 9发布于 2018-09-25 21:52:24
您可以利用xts对象中的数据是矩阵这一事实。因此您可以只使用矩阵计算,并将XTS_logical与XTS_integers相乘
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。
数据:
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")发布于 2018-09-25 22:02:37
或者直接使用XTS_logical作为要更改的单元格的索引。
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。
https://stackoverflow.com/questions/52499161
复制相似问题