R排序按组和汇总ddply
我有一个像这样的数据框R排序按组和汇总ddply,r,pivot-table,plyr,R,Pivot Table,Plyr,我有一个像这样的数据框 x <- data.frame(Category=factor(c("One", "One", "Four", "Two","Two", "Three", "Two", "Four","Three")), City=factor(c("D","A","B","B","A","D","A","C","C")), Frequency=c(10,1,5,2,14,8,20,3,5)) Category City Frequency 1 One D
x <- data.frame(Category=factor(c("One", "One", "Four", "Two","Two",
"Three", "Two", "Four","Three")),
City=factor(c("D","A","B","B","A","D","A","C","C")),
Frequency=c(10,1,5,2,14,8,20,3,5))
Category City Frequency
1 One D 10
2 One A 1
3 Four B 5
4 Two B 2
5 Two A 14
6 Three D 8
7 Two A 20
8 Four C 3
9 Three C 5
但我需要这些结果按每个类别组的总数排序。大概是这样的:
ddply(x,.(Category,City),summarize,Total=sum(Frequency))
Category City Total
1 Four B 5
2 Four C 3
3 One A 1
4 One D 10
5 Three C 5
6 Three D 8
7 Two A 34
8 Two B 2
Category City Frequency
1 Two A 34
2 Two B 2
3 Three D 14
4 Three C 5
5 One D 10
6 One A 1
7 Four B 5
8 Four C 3
我看了看,试过分类、排序、安排,但似乎什么也做不了。我在R怎么做 这是一个很好的问题,我想不出一个直接的方法来做这件事,而不是创建一个总大小索引,然后按它排序。下面是一个可能的
数据表
方法,它使用setorder
函数,通过引用对数据进行排序
这是一个基本的R版本,其中
DF
是ddply
调用的结果:
with(DF, DF[order(-ave(Total, Category, FUN=sum), Category, -Total), ])
产生:
Category City Total
7 Two A 34
8 Two B 2
6 Three D 8
5 Three C 5
4 One D 10
3 One A 1
1 Four B 5
2 Four C 3
逻辑基本上与David的相同,计算每个类别的总数
,对每个类别
中的所有行使用该数字(我们使用ave(…,FUN=sum)
),然后按其排序,再加上一些连接断路器,以确保按预期输出内容
with(DF, DF[order(-ave(Total, Category, FUN=sum), Category, -Total), ])
Category City Total
7 Two A 34
8 Two B 2
6 Three D 8
5 Three C 5
4 One D 10
3 One A 1
1 Four B 5
2 Four C 3