Рамки с данни с различна дължина

Гледам времевите серии на DJIA и FSTE100, но те не са с еднаква дължина поради дните на търговия. Как мога да поправя това в R?

Видях кодов фрагмент и се опитах да го адаптирам към моите данни по този начин:

zz <- merge(ftse100$Date, djia$Close, all = TRUE)
zz[is.na(zz)] <- 0
View(zz)

Но не ми даде резултата, който исках, дублираше редовете, така че се опитах да го направя сам:

z<-setdiff(ftse100$Date,djia$Date)
print(length(z))

for (i in 1:length(z) )  {
    index = match(c(z[i]), ftse100$Date)
    ftse100 <- ftse100[-c(index),]
}
print(NROW(ftse100))

Но трябваше да направя това с всички кадри с данни и ставаше прекалено сложно. Има ли начин да премахнете датите, които не са във всеки кадър с данни?


person MosesA    schedule 30.06.2016    source източник
comment
Гласувам да затворя този въпрос като извън темата, защото става въпрос за това как да използвам R без възпроизводим пример.   -  person gung - Reinstate Monica    schedule 30.06.2016


Отговори (1)


Мисля, че това може да направи това, което искате:

set.seed(2)
stocksA <- data.frame(Date=sample(1:10, 7), price=rnorm(7))
stocksB <- data.frame(Date=sample(1:10, 7), price=rnorm(7))
stocksC <- data.frame(Date=sample(1:10, 7), price=rnorm(7))
sharedDates <- intersect(intersect(stocksA$Date, stocksB$Date), stocksC$Date)
relevantA <- stocksA[stocksA$Date %in% sharedDates, ]
relevantA

Това ми дава:

  Date      price
1    2  0.9678839
2    7  0.1256203
6    8 -0.7526655

Разбира се, можете да използвате някои цикли, ако трябва да го направите за много набори от данни...

person dcc310    schedule 30.06.2016