我有一個data.table
尺寸爲421,570 x 16的對象,它存儲多個商店的數據。商店可以有不同的部門。這僅僅是一個例子。數據集較大。使用reshape2填充數組
> head(raw.df)
Store Type StoreSize Dept Date Weekly_Sales
1: 1 A 151315 1 2010-02-05 24925
2: 1 A 151315 2 2010-02-05 46039
3: 2 A 152825 1 2010-02-05 41596
4: 2 A 152825 2 2010-02-05 19404
5: 3 B 110025 1 2010-02-05 21828
6: 3 B 110025 2 2010-02-05 21043
理想情況下,我想創建一個數組對象,它可以存儲多個矩陣,每個矩陣上我想有一個存儲。基本上,我希望每個部門的每個級別都有每個部門的每週銷售額,這樣我就可以對數組對象運行一些時間序列分析,而無需多次運行相同的功能。
這條命令會產生我想要的數組的一種矩陣。
dcast(raw.df[which(raw.df$Store == 1), ], Date ~ Dept, value.var = "Weekly_Sales")
head(e1)
我正在考慮生成一個空數組,並使用for loop
填充它。我寫了這個循環,很遺憾不起作用。 陣列的尺寸爲143(天),99(部門爲每個商店),45(店)
ts.a <- array(data = NA, dim = c(143, 99, 45))
for (i in 1:45) {
# generate 45 matrices, one for each store
paste("mat", i, sep = "") <- matrix(data = NA, nrow = 143, ncol = 99)
paste("mat", i, sep = "") <- dcast(raw.df[which(raw.df$Store == i), ], Date ~ Dept,
value.var = "Weekly_Sales")
# merge the matrix into the array object
}
我知道我的做法可能是完全錯誤的。我的知識或R和編程是完全自學的。
這是有點不清楚,爲什麼你似乎認爲三維數組將是最有效的方式來存儲這些數據。你能詳細說明一下嗎? – joran
爲什麼不告訴我們你的實際問題是什麼,而不是要求你的問題的具體解決方案?對於這種類型的分析(對多組數據應用類似的計算),data.table是非常通用的。 – BrodieG
我同意以前的評論,並且還將'?xtabs'作爲未來的實用工具;例如'xtabs(Weekly_Sales〜Date + Dept + Store,DF)' –