Группировать, объединять и возвращать 3 столбца с помощью dplyr - PullRequest
0 голосов
/ 16 мая 2019

Вот некоторые данные:

data = data.frame(
    name=c("bob", "bob", "mary", "ann", "ann", "ann"),
    colour=c("blue", "blue", "yellow", "green", "green", "blue"),
    number=c(2,2,3,4,4,4))

data

data %>% 
    group_by(name) %>% 
    summarise(colours = paste(unique(colour), collapse = ' '))

Как я могу сгруппировать эти данные, как описано выше, но сохранить столбец number? В пределах data все воли Боба = 2, все Мэри = 3 и все Энн = 4. Таким образом, мне нужно возвращать только первый экземпляр каждого числа для каждого уникального значения name.

Ожидаемый результат:

 name     colours number
1  ann green blue      4
2  bob       blue      2
3 mary     yellow      3

1 Ответ

1 голос
/ 16 мая 2019

У вас есть 2 варианта:

  1. Добавить номер к group_by, group_by(name, number).Как правило, это хорошо, потому что если ваше предположение, что каждое имя соответствует ровно одному номеру, неверно, вы увидите нечетные комбинации.
  2. Совокупное число в вашем summarise, выбрав нужное вам значение, например, number = first(number) как дополнительное утверждение внутри summarise.Это эффективнее в вычислительном отношении, но если ваше предположение о том, что каждое имя соответствует ровно одному номеру, неверно, вы либо получите неожиданный результат, либо никогда не заметите.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...