2013-09-27 111 views
2

您好我有一個數據是這樣的:[R重塑dcast 0和1

partNumber manufacturer supplier availability 
p1   m1   s1  100 
p1   m1   s2  500 
p2   m2   s1  200 
p2   m2   s3  300 
.... 

我預期的輸出應該是這樣的:

partNumber manufacturer s1 s2 s3... 
p1   m1   100 500 0 ... 
p2   m2   200 0  300 ... 
... 

我試圖這樣使用dcast在reshape2實施包,這是我的命令:

df.dcast <- dcast(df, partNumber + manufacturer ~ supplier, value.var="availability") 

但是,輸出值只有0和1,好像它變成了輸出爲ch eckout而不是顯示可用性值。

partNumber manufacturer s1 s2 s3... 
p1   m1   1  1  0 ... 
p2   m2   1  0  1 ... 
... 

順便說一句,當我運行命令,有一個警告,

Aggregation function missing: defaulting to length... 

我不太明白什麼是聚合功能做任何的幫助和解釋會被apprecited。

+0

如果你的partNumber和製造商對是唯一的,那麼你可以添加'fun.aggregate'作爲總和或意思,並應該工作。您看到的1和0是聚合函數的結果,長度。 fun.aggregate參數告訴dcast在可用性中使用相同的partNumber和製造商 – TheComeOnMan

+0

執行的值是什麼函數,我無法用您提供的數據樣本重現您的錯誤。 –

+1

感謝您的快速響應,但我認爲同樣的事情,但是,它們應該是獨一無二的,但看起來像1和0是由'非唯一'partNumber和製造商的鍵造成的......我應該怎麼做這個案例。在演員演員之前運行一個獨特的? –

回答

3

當我做這與您的數據的例子,我得到:

df.dcast <- dcast(df, partNumber + manufacturer ~ supplier, value.var="availability") 
df.dcast 
    partNumber manufacturer s1 s2 s3 
1   p1   m1 100 500 NA 
2   p2   m2 200 NA 300 

什麼是最有可能發生的是,你的availability列是不是你認爲它是。也許它已被轉換爲因子變量,因爲輸入文件中的該列中有一些文本。如果是這種情況,那麼你需要閱讀R-FAQ 7.10