2012-03-13 2 views
0

У меня есть один основной объект XTS «Данные» с строками ~ 1M, охватывающий 22 дня. У меня есть другой объект XTS «Set» с 22 строками, с 1 записью в день. Я хотел бы объединить этот меньший объект XTS в более крупный, так что у него будет дополнительный столбец, содержащий значение в Set для этого дня.Добавление столбца в объект xts на основе другого объекта xts в R

Сначала я попробовал:

> Data=cbind(Data,as.numeric(Set[as.Date(index(Data[]))])) 
Error in error(x, ...) : 
improper length of one or more arguments to merge.xts 

Тогда я попробовал:

> Data=cbind(Data,1) 
> Data[,6]=as.numeric(Set[as.Date(index(Data[,6]))]) 
Error in NextMethod(.Generic) : 
    number of items to replace is not a multiple of replacement length 

Я также попытался без as.numeric но получил ту же ошибку. Я попытался превратить Data в data.frame и получил ошибку:

Error in `[<-.data.frame`(`*tmp*`, , 6, value = c(1, 397.16, 397.115, : 
    replacement has 22 rows, data has 835771 

Что я делаю неправильно и как это сделать? Я использовал R только последние две недели.

Спасибо!

> str(Data) 
An ‘xts’ object from 2012-01-03 05:01:05 to 2012-01-31 14:59:59 containing: 
    Data: num [1:835771, 1:5] 397 397 397 397 397 ... 
- attr(*, "dimnames")=List of 2 
    ..$ : NULL 
    ..$ : chr [1:5] "SYN" "\"WhitePack.BID_SIZE\"" "\"WhitePack.BID_PRICE\"" "\"WhitePack.ASK_PRICE\"" ... 
    Indexed by objects of class: [POSIXct,POSIXt] TZ: 
    xts Attributes: 
NULL 
> str(Set) 
An ‘xts’ object from 2012-01-02 to 2012-01-31 containing: 
    Data: chr [1:22, 1] " 1.000" "397.160" "397.115" "397.175" "397.200" "397.390" "397.560" "397.580" "397.715" ... 
- attr(*, "dimnames")=List of 2 
    ..$ : NULL 
    ..$ : chr "Settle" 
    Indexed by objects of class: [POSIXct,POSIXt] TZ: 
    xts Attributes: 
NULL 

ответ

1

Вы получаете успех:

df3 <- merge(Data, Set) 

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

df3[, 6] <- na.locf(df3[, 6]) 
+0

Нет, добавляет 22 строки к данным с NA в каждой новой ячейке данных, за исключением этих 22. – user1266555

+0

Вам нужно опубликовать результаты str (Data) и str (Set). Я предполагаю, что ваши индексные форматы не то, что вы думаете. –

+0

Я отредактировал исходное сообщение, чтобы включить это. – user1266555