поиск и устранение несоответствий в датафреймах
library(quantmod)
library(rusquant)
library(tseries)
library(timeDate)
startDate <- as.Date('2018-01-01')
endDate <- as.Date('2020-04-14')
tickers <- c("TATN", "TATNP")
getSymbols(tickers, src = 'Finam', period = '30min', from = startDate, to = endDate)
TATN <- data.table(time = index(TATN$TATN.Open), TATN$TATN.Open, TATN$TATN.Close)
TATNP <- data.table(time = index(TATNP$TATNP.Open), TATNP$TATNP.Open, TATNP$TATNP.Close)
Я скачиваю котировки акций с финама и сталкиваюсь с проблемой потери части данных по одной из бумаг. в примере кода скачиваются данные по ценам с шагом в 30 минут, и в итоге я получаю фреймы разной длинны, так как в одном из фреймов теряется одна и более котировок, что приводит к разной длинне полученных данных Например в моем коде тикер TATN имеет длинну 10366 , а TATNP имеет длинну 10364 , соответственно выпало 2 котировки.
Что бы устранить эту проблему мне нужно найти данные которые не соответствуют, а именно тот индекс времени который присутствует в одном фрейме и отсутствует в другом и удалить его, что бы этого времени и соответствующего этому времени данных не было сразу в двух датафреймах, а остались только те котировки, которые имеют одинаковый индекс времени.
Как я могу решить эту задачу?
Пример данных в таблице по ссылке
https://yadi.sk/d/dr0W3UO_U91nSA
Ответы (1 шт):
так как примера данных не предоставлено, приведу абстрактный пример.
допустим, есть две data.table:
> t1 <- data.table(c(1, 2, 4), 1:3)
> t1
V1 V2
1: 1 1
2: 2 2
3: 4 3
> t2 <- data.table(c(1, 2, 3, 5), 5:8)
> t2
V1 V2
1: 1 5
2: 2 6
3: 3 7
4: 5 8
получить только те строки из t1, в которых V1 совпадает с V1 из t2:
> t1[V1 %in% t2$V1]
V1 V2
1: 1 1
2: 2 2
и взаимообразно, получить только те строки из t2, в которых V1 совпадает с V1 из t1:
> t2[V1 %in% t1$V1]
V1 V2
1: 1 5
2: 2 6