Объединение строк с использованием наблюдения как условия - PullRequest
0 голосов
/ 08 октября 2019

В настоящее время выполняется некоторый анализ набора данных mpg, который, как мне кажется, существует в tidyverse. Я пытаюсь взять большой набор данных и объединить строки, чтобы они выглядели как меньшие ниже.

Я попытался суммировать, чтобы объединить как модель и годы, чтобы добраться до маленькой таблицы ниже, но не могу понятькак плавно сделать это с Cty быть средним.

library(tidyverse)

mpg %>%
    group_by(manufacturer, model, year, cty) %>%
    select(manufacturer, model, year, cty) %>%
    summarise(n_model = n()) %>%
    print(n = 15)
# Output
# A tibble: 172 x 5
# Groups:   manufacturer, model, year [76]
   manufacturer model       year   cty n_model
   <chr>        <chr>      <int> <int>   <int>
 1 audi         a4          1999    16       1
 2 audi         a4          1999    18       2
 3 audi         a4          1999    21       1
 4 audi         a4          2008    18       1
 5 audi         a4          2008    20       1
 6 audi         a4          2008    21       1
 7 audi         a4 quattro  1999    15       1
 8 audi         a4 quattro  1999    16       1
 9 audi         a4 quattro  1999    17       1
10 audi         a4 quattro  1999    18       1
11 audi         a4 quattro  2008    15       1
12 audi         a4 quattro  2008    17       1
13 audi         a4 quattro  2008    19       1
14 audi         a4 quattro  2008    20       1
15 audi         a6 quattro  1999    15       1
# … with 157 more rows
# Looking for this
manufacturer model year     avg_cty     n
audi          a4    1999    18.25000    4
audi          a4    2008    19.66667    3

Предполагается, что таблица меньшего размера объединяет как модель и годы, так и средний пробег по городу (и количество). Любая помощь приветствуется!

1 Ответ

0 голосов
/ 08 октября 2019

Использование data.table

library(data.table)
setDT(mpg)[, .(city = mean(cty), n_model = .N), .(manufacturer, model, year)]
...