首页 > 解决方案 > 提取每个组的 top_n 变量名称

问题描述

对于每个组,我试图让 top_n car_names 出现在以逗号分隔的新列中。

例如,当您运行下面的代码时,您将看到每组 (cyl) 前 2 mpg 的汽车。接下来,我想提取前两辆车(或更多,如果有平手的话)并将它们一起存储到一个名为 car_summary 的新列中。

mtcars2 %>% 
  select(mpg, cyl, car_name) %>% 
  group_by(cyl) %>%  
  mutate(Score = rank(mpg, ties.method = "max")) %>%
  arrange(desc(Score)) %>% top_n(2,Score)

预期的输出如下所示

cyl  <-  c(8,4,6)
car_summary <-  c("Pontiac Firebird, Hornet Sportabout", "Toyota Corolla, 
Fiat 128", "Hornet 4 Drive, Mazda RX4, Mazda RX4 Wag")

data.frame(cyl, car_summary)

  cyl                                  car_summary
1   8          Pontiac Firebird, Hornet Sportabout
2   4                     Toyota Corolla, Fiat 128
3   6     Hornet 4 Drive, Mazda RX4, Mazda RX4 Wag

标签: rdplyr

解决方案


你需要toString从基础 R -

mtcars2 %>% 
  select(mpg, cyl, car_name) %>% 
  group_by(cyl) %>%  
  mutate(Score = rank(mpg, ties.method = "max")) %>%
  arrange(desc(Score)) %>%
  top_n(2,Score) %>%
  summarize(car_summary = toString(car_name))

推荐阅读