通过排名创建表格,然后进行比较

  • 本文关键字:然后 比较 表格 创建 r
  • 更新时间 :
  • 英文 :


在包括不同城市、年份和慷慨程度的数据中,需要创建一个表,列出五年数据中平均慷慨程度得分最高的15个城市。我该怎么做?

Year    Cities  generosity  economic    culture     hp
2000    Seoul   1.33358 0.35637 1.30923 0.65124
2001    Mexico City 1.22857 0.07785 1.22393 0.41319
2002    Guangzhou   0.95578 0.10583 1.23788 0.63376
2003    Beijing 1.33723 0.18676 1.29704 0.62433
2004    Cairo   1.02054 0.21312 0.91451 0.48181
2005    New York    1.39451 0.1589  1.24711 0.54604
2006    Kolkata 0.98124 0.17521 1.23287 0.49049
2007    Moscow  1.56391 0.37798 1.21963 0.61583
2008    Bangkok 1.33596 0.28703 1.36948 0.61777
2009    Buenos Aires    1.30782 0.2254  1.28566 0.5845
2010    Shenzhen    1.42727 0.38583 1.12575 0.64157
2011    Dhaka   1.26637 0.32067 1.28548 0.59625
2012    Lagos   1.04424 0.11069 1.25596 0.42908
2013    Istanbul    1.52186 0.4921  1.02    0.54252
2014    Osaka   1.06353 0.0927  1.1985  0.5421
2015    Karachi 1.32792 0.21843 1.29937 0.61477

在基本R中,您可以执行以下操作:

df1 <- aggregate(generosity~Cities, df, mean, na.rm = TRUE)
result <- head(df1[order(df1$generosity), ], 15)

下面是一个使用{dplyr}的实现

编辑:我以为你指的是15年数据中排名前五的城市。

library(dplyr, warn.conflicts = FALSE)
dat <- tribble(~Year,~Cities,~generosity,~economic,~culture,~hp,
2000,"Seoul",1.33358,0.35637,1.30923,0.65124,2001,"Mexico City",1.22857,0.07785,1.22393,0.41319,2002,"Guangzhou",0.95578,0.10583,1.23788,0.63376,2003,"Beijing",1.33723,0.18676,1.29704,0.62433,2004,"Cairo",1.02054,0.21312,0.91451,0.48181,2005,"New York",1.39451,0.1589,1.24711,0.54604,2006,"Kolkata",0.98124,0.17521,1.23287,0.49049,2007,"Moscow",1.56391,0.37798,1.21963,0.61583,2008,"Bangkok",1.33596,0.28703,1.36948,0.61777,2009,"Buenos Aires",1.30782,0.2254,1.28566,0.5845,2010,"Shenzhen",1.42727,0.38583,1.12575,0.64157,2011,"Dhaka",1.26637,0.32067,1.28548,0.59625,2012,"Lagos",1.04424,0.11069,1.25596,0.42908,2013,"Istanbul",1.52186,0.4921,1.02,0.54252,2014,"Osaka",1.06353,0.0927,1.1985,0.5421,2015,"Karachi",1.32792,0.21843,1.29937,0.61477)
dat %>% 
group_by(Cities) %>% 
summarize(avg_generosity = mean(generosity)) %>%
arrange(desc(avg_generosity)) %>%
head(5)
#> `summarise()` ungrouping output (override with `.groups` argument)
#> # A tibble: 5 x 2
#>   Cities   avg_generosity
#>   <chr>             <dbl>
#> 1 Moscow             1.56
#> 2 Istanbul           1.52
#> 3 Shenzhen           1.43
#> 4 New York           1.39
#> 5 Beijing            1.34

由reprex包(v0.3.0(创建于2020-12-03

最新更新