R Dplyr: Как мне добавить столбцы из несгруппированного фрейма данных в сгруппированный фрейм данных и сохранить группировку? - PullRequest
3 голосов
/ 27 мая 2020

У меня есть основной фрейм данных (data), который содержит информацию о покупках: имена, год, город и несколько других переменных:

Name Year City
N1   2018 NY
N2   2019 SF
N2   2018 SF
N1   2010 NY
N3   2020 AA

Я использовал new_data <- data %>% group by(Name) %>% tally(name = "Count"), чтобы получить что-то вроде это:

Name Count
N1   2
N2   2
N3   1

Мои вопросы, желательно с использованием dplyr:

1) Как мне теперь добавить город, соответствующий названию, в new_data, например:

Name Count City
N1   2     NY
N2   2     SF
N3   1     AA

2) Как добавить самый ранний год каждого Имени в new_data, например:

Name Count City Year
N1   2     NY   2010
N2   2     SF   2018
N3   1     AA   2020

Ответы [ 2 ]

2 голосов
/ 27 мая 2020

Кажется, что summarise может вам больше подойти, например:

data %>%
  group_by(Name, City) %>%
  summarise(Count = n(),
            Year = min(Year))

Вывод:

# A tibble: 3 x 4
# Groups:   Name [3]
  Name  City  Count  Year
  <fct> <fct> <int> <int>
1 N1    NY        2  2010
2 N2    SF        2  2018
3 N3    AA        1  2020

Хотя вы можете сгруппировать с City, чтобы сохранить его на выходе.

0 голосов
/ 27 мая 2020

Вариант с data.table

library(data.table)
setDT(data)[, .(Count = .N, Year = min(Year)), .(Name, City)]
...