2015-08-15 1 views
2

У меня есть объект xts, теперь я хотел бы выбрать все строки индекса, за исключением определенного периода.Как подмножить объект xts на основе условия [is not]

Я понимаю, что указание my.object["2015/2015-03-01"] будет выбирать строки индекса с 2015 по март 2015 года. Но как я могу сделать операцию is not на основе того же синтаксиса xts?

Я пробовал my.object[!"2015/2015-03-01"], но он не работает.

ответ

4

Я не уверен, почему вы ожидали бы my.object[!"2015/2015-03-01"] для работы. Применение логической функции к символьной строке не имеет смысла.

Независимо, одним из способов добиться того, что вы хотите, является использование аргумента which.i для [.xts, чтобы найти целые индексы. Затем вы можете удалить эти наблюдения из вашего объекта xts, используя отрицательный i в другом вызове [.xts.

R> require(xts) 
R> data(sample_matrix) 
R> x <- as.xts(sample_matrix) 
R> unwantedObs <- x["2007-01-04/2007-06-28", which.i=TRUE] 
R> x[-unwantedObs,] 
       Open  High  Low Close 
2007-01-02 50.03978 50.11778 49.95041 50.11778 
2007-01-03 50.23050 50.42188 50.23050 50.39767 
2007-06-29 47.63629 47.77563 47.61733 47.66471 
2007-06-30 47.67468 47.94127 47.67468 47.76719 
R> # in one line: 
R> #x[-x["2007-01-04/2007-06-28", which.i=TRUE],] 
+0

Спасибо. Могу я спросить, в чем разница между which.i и какой? – uncool

+0

Как я уже сказал в своем ответе, 'which.i' является аргументом' [.xts'. 'which' является функцией. –

+0

ohh. Почему я спросил, что они ведут себя точно так же (с использованием which.i или который) не имеет значения. – uncool

Смежные вопросы