Объединить два объекта XTS один с логическими - PullRequest
0 голосов
/ 25 сентября 2018

У меня есть два объекта XTS, оба одинакового размера, один с логическими операторами (TRUE / FALSE), а другой с целыми числами.Я пытаюсь установить подмножество целых чисел, чтобы показывать только точки данных, в которых объект XTS логических операторов имеет значение ИСТИНА.

XTS_logical

DATE       Col1      Col2
20170630   TRUE      FALSE
20170731   FALSE     TRUE
20170831   TRUE      TRUE

XTS_integers

DATE       Col1      Col2
20170630    5         6
20170731    2         3
20170831    5         9

XTS желаемый результат

DATE       Col1      Col2
20170630    5         NA
20170731    NA        3
20170831    5         9

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

Или используйте XTS_logical непосредственно в качестве индекса ячеек, которые вы хотите изменить.

XTS_integers[!XTS_logical] <- NA
#            Col1 Col2
# 2017-06-30    5   NA
# 2017-07-31   NA    3
# 2017-08-31    5    9

Таким образом, любые 0 s, изначально находящиеся в XTS_integers, не будут изменены на NA.

0 голосов
/ 25 сентября 2018

Вы можете использовать тот факт, что данные в объекте 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")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...