2017-05-01 58 views
0

我得到了一個data.frame,我想傳播有點像dplyr的傳播函數,但與多個變量。傳播到多列

Code Product 2008 2008_Unit 2015 2015_Unit Type 
010110 Pure-bred breeding horses and asses 1 Tons NA NA Exports_Peru_US 
010110 Pure-bred breeding horses and asses 6 Tons NA NA Exports_Peru_World 
010110 Pure-bred breeding horses and asses 55 Units NA NA Exports_US_Peru 
010110 Pure-bred breeding horses and asses 3899 Units NA NA Exports_US_World 
010110 Pure-bred breeding horses and asses 0 No quantity 6 Tons Exports_World 
010110 Pure-bred breeding horses and asses 31 Tons NA NA Imports_Peru_US 

我想這變成:

Code Product 2008_Exports_Peru_US 2008_Unit_Exports_Peru_US 2015_Exports_Peru_US 2015_Unit_Exports_Peru_US 2008_Exports_Peru_World ... 
010110 Pure-bred breeding horses and asses 1 Tons NA NA 6 ... 

所以每個代碼只出現在一排。

注意:並非所有代碼都具有所有類型。

reshape2 + data.table作品

dcast(setDT(master), Code + Product ~ Type, value.var = c("2008","2008_Unit", "2015", "2015_Unit")) 
+0

你試過從''dplyr' spread'? – Aramis7d

+1

可能重複的[如何將多個變量的重複測量值傳播爲寬格式?](http://stackoverflow.com/questions/29775461/how-can-i-spread-repeated-measures-of-multiple-variables-進入寬格式) – Aramis7d

+0

@ Aramis7d我有,通過使用許多傳播,我仍然以相同的代碼ID的倍數。不能使用一個,因爲傳播只需要1個參數,並且我需要傳播4個列。我也試過dcast沒有成功(雖然也許這只是我對reshape2軟件包沒有經驗)。 – GonzaloXavier

回答

0

reshape2 + data.table作品

master <- the data frame 
dcast(setDT(master), Code + Product ~ Type, value.var = c("2008","2008_Unit", "2015", "2015_Unit")) 
+0

因此,'data.table'中的'dcast'將不起作用? – Sotos