2016-12-19 26 views
-2

我使用dplyr和tidyr彙總和彙總了一些多元數據。我如何以像下面這樣的表格形式呈現數據?使用dplyr和tidyr將R中的多元數據轉換爲彙總表

數據集:

year, division, group, count 
2016, utensils, forks, 10 
2016, utensils, spoons, 5 
2016, utensils, knives, 20 
2015, utensils, spoons, 4 
2015, utensils, knives, 15 
2015, utensils, forks, 11 
2016, tools, hammer, 10 
2016, tools, wrench, 5 
2016, tools, awe, 20 
2015, tools, hammer, 4 
2015, tools, wrench, 15 
2015, tools, awe 11 

我想目前的信息是這樣的:

​​
+1

很難找到更好的,如果我不知道爲什麼我是在downvoted – Rhodo

+0

您希望結果成爲每個元素具有唯一劃分的數據框列表嗎? – Psidom

+0

請 - 我想分開的數據分出和單獨的數據框將罰款 – Rhodo

回答

1

您可以檢查此。基本上它是一個重塑的問題,但你需要通過列先分割你的數據幀,然後使用dcast變換每個子集:

library(reshape2) 
lapply(split(df, df$division), function(s) dcast(group ~ year + division, data = s, value.var = "count")) 

#$tools 
# group 2015_tools 2016_tools 
#1 awe   11   20 
#2 hammer   4   10 
#3 wrench   15   5 

#$utensils 
# group 2015_utensils 2016_utensils 
#1 forks   11   10 
#2 kinves   15   20 
#3 spoons    4    5 

或者因爲每個子數據幀只包含一個獨特的部門,可以從列名砸不增加它的dcast公式,因爲它不會增加額外的信息:

lapply(split(df, df$division), function(s) dcast(group ~ year, data = s, value.var = "count")) 

#$tools 
# group 2015 2016 
#1 awe 11 20 
#2 hammer 4 10 
#3 wrench 15 5 

#$utensils 
# group 2015 2016 
#1 forks 11 10 
#2 kinves 15 20 
#3 spoons 4 5 
+1

非常感謝教人釣魚。我結束了只需要:dcast(數據集,年+組〜分區,value.var =「count」) – Rhodo

+0

當然。很高興你找到自己的方式。 – Psidom