Как агрегировать фактор-переменную? - PullRequest
0 голосов
/ 18 февраля 2019

У меня есть кадр данных, который выглядит следующим образом:

ID    month    country   count    style
1     2012-02  UK        3        high
1     2012-02  US        10       high
1     2012-02  FR        5        high
etc

Теперь я хочу агрегировать значения по переменной ID и country и, следовательно, я использую:

aggregated_data = setDT(subset)[, .(Country = list(Country), ID = min(ID), 
count = sum(count), by = list(Model, Month)][]

Чтобы получить

ID    month    country     count    
1     2012-02  UK, US, FR   18      
etc

Однако, поскольку моя переменная style является фактором, я не знаю, как я могу включить это в агрегированную таблицу.Значения факторной переменной всегда одинаковы для одного ID, поэтому мне нужно вывести только первое значение переменной style для переменной style в агрегированной таблице.Кто-нибудь знает, как это сделать?

1 Ответ

0 голосов
/ 18 февраля 2019

Вы можете просто использовать unique, например

df <- setDT(df)
df[, .(country = toString(country), count = sum(count), style = unique(style)), by = list(ID, month)]
#   ID   month    country count style
#1:  1 2012-02 UK, US, FR    18  high

Или использовать dplyr

df %>%
    group_by(ID, month) %>%
    summarise(
        country = toString(country),
        count = sum(count),
        style = unique(style))
## A tibble: 1 x 5
## Groups:   ID [?]
#     ID month   country    count style
#  <int> <fct>   <chr>      <int> <fct>
#1     1 2012-02 UK, US, FR    18 high

Оба метода предполагают, что style всегда одинаково для IDи month.


Пример данных

df <- read.table(text =
    "ID    month    country   count    style
1     2012-02  UK        3        high
1     2012-02  US        10       high
1     2012-02  FR        5        high", header = T)
...