r聚合函数 - 如何显示其他列

时间:2017-12-07 02:17:32

标签: r

我有两个数据框:城市和国家。我想找出每个国家最受欢迎的城市。 City和Country有一个共同的字段,City.CountryCode和Country.Code。这两个数据框合并为一个名为CityCountry的数据框。我像这样尝试了聚合命令:

aggregate(Population.x~CountryCode, CityCountry, max)

此聚合命令仅显示CountryCode和Population.X列。我如何显示国家名称和城市名称?聚合是否在这里使用错误的命令?

1 个答案:

答案 0 :(得分:1)

还可以使用dplyrCountry进行分组,然后按max(Population.x)进行过滤。

library(dplyr)

set.seed(123)
CityCountry <- data.frame(Population.x = sample(1000:2000, 10, replace = TRUE), 
                          CountryCode = rep(LETTERS[1:5], 2), 
                          Country = rep(letters[1:5], 2), 
                          City = letters[11:20], 
                          stringsAsFactors = FALSE)

CityCountry %>% 
  group_by(Country) %>% 
  filter(Population.x == max(Population.x)) %>%
  ungroup()

# A tibble: 5 x 4
  Population.x CountryCode Country  City
         <int>       <chr>   <chr> <chr>
1         1287           A       a     k
2         1789           B       b     l
3         1883           D       d     n
4         1941           E       e     o
5         1893           C       c     r