2015-09-10 46 views
-1

在事先我appologize不提供重複的例子,但我希望 的情況下獲得清晰的通過我的描述rbind時間和價值的載體,以data.frame

我有資產的一個長長的清單價格和附加日期。 列表看起來像這樣

> my.list 

[[1]] 
AT0000743059.time  AT0000743059 
1   02.01.2012  24.020 
2   03.01.2012  24.225 
3   04.01.2012  24.130 
4   05.01.2012  23.935 


[[2]] 
AT0000743055.time  AT0000743055 
1   02.01.2012  24.020 
2   03.01.2012  24.225 
3   04.01.2012  24.130 
4   05.01.2012  23.935 
5   09.01.2012  24.060 

並非所有在列表中的對象具有相同的長度。 我需要的是rbind每一個對象列表中的彼此相鄰使得輸出看起來像使用

AT0000743059.time AT0000743059 AT0000743055.time  AT0000743055 
1   02.01.2012  24.020   02.01.2012   24.020 
2   03.01.2012  24.225   03.01.2012   24.225 
3   04.01.2012  24.130   04.01.2012   24.130 
4   05.01.2012  23.935   05.01.2012   23.935 
5   NA    NA    09.01.2012   24.060 

plyr的ldply在

> plyr::ldply(my.list, cbind) 

    AT0000743059.time AT0000743059 AT0000743055.time AT0000743055 
1   02.01.2012  24.020 NA     NA  
2   03.01.2012  24.225 NA     NA 
3   04.01.2012  24.130 NA     NA  
4   05.01.2012  23.935 NA     NA  
5         02.01.2012   24.020 
6         03.01.2012   24.225 
7         04.01.2012   24.130 
8         05.01.2012   23.935 
9         09.01.2012   24.060 

結束移動來港至底部,並刪除他們之後導致麻煩 與日期誰以一種奇怪的方式轉變。我希望有一個有效的方法來解決這個問題。感謝您的幫助

+1

您是否真的想要將它們綁定,或者更確切地說,將它們加入到時間列中? –

+0

@ Wannes Rosiers:這也是我可以解決的一個解決方案。你說你可以將列表轉換成一個大xts對象? – Pat

回答

0

就目前而言,合併是一個循環定義,根據需要可能不是所有,但這個給你,我建議的輸出:

my.list <-list(
    data.frame(AT0000743059.time = c("02.01.2012","03.01.2012","04.01.2012","05.01.2012"), 
     AT0000743059 = c(24.020,24.225,24.130,23.935), 
     stringsAsFactors = FALSE), 
    data.frame(AT0000743055.time = c("02.01.2012","03.01.2012","04.01.2012","05.01.2012","09.01.2012"), 
     AT0000743055 = c(24.020,24.225,24.130,23.935,24.060), 
     stringsAsFactors = FALSE) 
) 

result <- my.list[[1]] 
colnames(result)[1] <- "time" 

for (i in 2:length(my.list)){ 
    temp <- my.list[[i]] 
    colnames(temp)[1] <- "time" 
    result <- merge(result, temp,all = TRUE) 
} 

與所需輸出唯一的區別是我只保留一個時間欄,因爲它是該行中每個測量值的時間。