2015-01-11 79 views
0

我試圖改變看起來像這樣的數據:dcast產生極寬的數據幀

> long.data 
     date  ID average stat 
5128 20020510 UKM66 42.51919 minimum 
2267 20020510 PL622 61.31768 average 
265 20020503 DE71E 42.17819 maximum 

其中average是由dateIDstat,組合鑑定到的東西,看起來像這樣:

> wide.data 
     date ID minimum average maximum 
1 20020510 UKM66  50  62  70 
2 20020510 PL622  52  60  63 
3 20020510 DE71E  49  67  80 

據我所知,dcast會是這樣做的一個很好的方式,但是當我嘗試以下方法:

> wide.data <- dcast(long.data, date + ID + stat ~ average) 

我得到一個警告和一個窘況長數據幀:

Using stat as value column: use value.var to override. 
> ncol(wide.data) 
[1] 4577 

似乎是R是給我的每一個獨特的觀察值的列。我已閱讀有關reshape2dcast的文檔,但我仍然沒有把它做對。這裏有什麼問題?

+3

你想'dcast(long.data,date + ID〜stat,value.var =「average」)''。 'dcast'會爲'''右邊的變量的每個唯一值(或多個變量的值的組合)提供一個新列。 – eipi10

+0

我很難理解實際正在計算的內容。哪一列具有「平均值」,「最大值」和「最小值」應從中導出的值?爲什麼這個數據例子會產生作爲期望輸出提供的結果? –

+0

long.data中的平均值包含所有值。我承認這個數據有時候會包含「平均值」,令人困惑。 –

回答

1

您想要dcast(long.data, date + ID ~ stat, value.var="average")dcast會爲您提供~右側變量的每個唯一值(或多個變量值的組合)的新列。