2013-06-21 72 views
1

我想轉換數據幀DF1到DF2類似如下:如何按日期重新排列我的R數據框並填入NAs?

df1 <- read.table(textConnection(" 
id  date ret 
1101 19900104 6.5867 
1102 19900105 6.5383 
1103 19900106 6.6043 
1101 19900105 3.6943 
1102 19900106 3.6368 
1103 19900107 1.2740 
1104 19900107 3.8572 
1101 19900106 2.2525 
1102 19900107 1.1253 
1101 19900107 2.2331 
"),header=T) 

df2 <- read.table(textConnection(" 
date  1101 1102 1103  1104 
19900104 6.5867 NA  NA  NA 
19900105 3.6943 6.5383 NA  NA 
19900106 2.2525 3.6368 6.6043 NA 
19900107 2.2331 1.1253 1.2740 3.8572 
"),header=T) 

我試圖用循環,但我不認爲這是在的情況下一個很好的解決方案,我有非常大的數據,涵蓋了從1990年到日常期非常感謝任何人都可以幫助我......

+0

應該可以用'plyr'和/或'reshape'包(我沒有用他們自己,但看到了類似的問題,頻繁彈出,所以我不能幫你)來做到這一點。 –

回答

1

這是從長到寬的格式。 reshape2是處理這些類型問題的一個很好的軟件包。要從長到寬,您想要使用dcast()。你給它的對象使用(df1),然後一個公式,它基本上指示了~的左側索引行以及哪些列在右側編入索引。

library(reshape2) 
df2 <- dcast(df1, date ~ id) 
df2 
#  date 1101 1102 1103 1104 
# 1 19900104 6.5867  NA  NA  NA 
# 2 19900105 3.6943 6.5383  NA  NA 
# 3 19900106 2.2525 3.6368 6.6043  NA 
# 4 19900107 2.2331 1.1253 1.2740 3.8572 
+0

它的工作原理和感謝您的幫助...... @ alexwhan – toddleR