使用dplyr和tidyr将R中的多元数据转换为聚合表
我正在使用dplyr和tidyr对一些多元数据进行汇总和总结。如何以如下表格的形式呈现数据 数据集:使用dplyr和tidyr将R中的多元数据转换为聚合表,r,data.table,dplyr,tidyr,R,Data.table,Dplyr,Tidyr,我正在使用dplyr和tidyr对一些多元数据进行汇总和总结。如何以如下表格的形式呈现数据 数据集: 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,
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
我想提供如下信息:
2016 2015
Utensils Utensils
Forks count count
Spoons count count
Knives count count
2016 2015
Tools Tools
Hammer count count
Wrench count count
Awe count count
你可以检查一下。基本上这是一个重塑问题,但您需要先按分割列分割数据帧,然后使用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
如果我不知道我为什么会被拒绝,很难变得更好。你希望结果是一个数据帧列表,其中每个元素都有唯一的划分吗?请-我想按划分将数据分离出来,分离数据帧就好了。非常感谢你教人钓鱼。最后,我只需要:dcast(数据集,年份+组~division,value.var=“count”)当然可以。很高兴你找到了自己的路。