2015-12-02 66 views
-4

后,我来到了下表为: Complaint types and Boroughs数据排序

我想,以确定在每个市镇前4的问题。由于有4个自治市镇,排序不起作用。有关如何获得的任何想法?

+0

看'order' .. –

+0

所以,我把每个市镇的一个子集,它使用顺序? –

+0

@Alex尝试订单,testsort < - aggregatespread [order(-BRONX)]错误:找不到对象'BRONX' –

回答

0

您可以使用order(column, decreasing=TRUE)[1:4]将投诉类型列子集。它将返回向量中最大的四个值。然后很容易将其转换为任何需要的形式;这里的数据帧是有道理的:

lst <- lapply(df[-1], function(col) df[,'Complaint.Type'][order(col, decreasing=T)[1:4]]) 
as.data.frame(lst) 
#  BRONX BROOKLYN MANHATTAN QUEENS 
#1 Facility Facility  Adopt Facility 
#2 Abuse Abuse Advocate Adopt 
#3  Park  Air  Park  Park 
#4 Advocate Adopt  Abuse Advocate 

数据

df <- data.frame(Complaint.Type=c('Adopt', 'Advocate', 'Air', 'Abuse', 'Facility','Park'), 
       BRONX=c(0,5, 1, 33, 81, 7), 
       BROOKLYN=c(2,0,100,148,177, 1), 
       MANHATTAN=c(129,49,2,9,1,15), 
       QUEENS=c(50,3,0,3,2469,6)) 
+0

就像一个魅力!谢谢!你能帮我理解df [-1]和函数(col)的作用吗? –

+0

'df [-1]'删除第一列。我们不希望在投诉类型 –

+0

中包含投诉类型'函数(col)df [,'投诉...... [1:4]]'被称为匿名函数。我创建了名字'col',我可以使用任何字符串来定义变量。 col只是因为我们正在谈论列而有名。有关匿名函数的完整说明,请访问https://www.safaribooksonline.com/library/view/the-art-of/9781593273842/ch07s13.html –