R语言 如何基于多列进行排序?

mnemlml8  于 2023-01-06  发布在  其他
关注(0)|答案(1)|浏览(173)

我得到了这个由不同列组成的数据框(名称,no_entrees_gratuites即免费游客,年份和地区)。

$ name                : chr [1:13233] "Musée de la Folie Marco" "Musée de la Poterie" "Musée Alsacien" "Musée Historique" ...
 $ no_entrees_gratuites: num [1:13233] 2339 538 1329 3305 723 ...
 $ year                : num [1:13233] 2008 2008 2008 2008 2008 ...
 $ region              : chr [1:13233] "Grand Est" "Grand Est" "Grand Est" "Grand Est" ...
name               no_entrees_gratuites  year  region 
Musée du Louvre                4117897   2008  Ile-de-France
Musée Fabre                    131553    2008  Occitanie
Château de Versailles          1696929   2008  Ile-de-France
Musée d'Art et d'Histoire      602183    2008  Occitanie
Musée d'Orsay                  1327622   2008  Ile-de-France
Muséum d'Histoire Naturelle    150530    2008  Occitanie

我想把它排序,并有前3名每年和地区访问量最大的博物馆的名称。
大概是这样:

name               no_entrees_gratuites  year  region 
Musée du Louvre                4117897   2008  Ile-de-France
Château de Versailles          1696929   2008  Ile-de-France
Musée d'Orsay                  1327622   2008  Ile-de-France
Musée d'Art et d'Histoire      602183    2008  Occitanie
Muséum d'Histoire Naturelle    150530    2008  Occitanie
Musée Fabre                    131553    2008  Occitanie

我试过dplyr包中的arrange函数,但是对于我想要的来说太宽泛了。

musees_entrees_gratuites_per_region_year <- musees_entrees_gratuites_per_region_year %>% arrange(desc( no_entrees_gratuites))

我也尝试了订单功能,但它也太宽泛了。

musees_entrees_gratuites_per_region_year[with(musees_entrees_gratuites_per_region_year,order(musees_entrees_gratuites_per_region_year$no_entrees_gratuites, musees_entrees_gratuites_per_region_year$name)),]

有人能帮帮我吗?
谢啦,谢啦

6tdlim6h

6tdlim6h1#

听起来像是要按年份、地区和no_entrees_gratuites对数据进行排序,并且还想按年份和地区对数据进行子集化,以显示前3个no_entrees_gratuites

musees_entrees_gratuites_per_region_year %>%
  arrange(region, year, desc(no_entrees_gratuites)) %>%
  group_by(region, year) %>%
  slice(1:3) %>%
  ungroup()

相关问题