Я работаю с наборами данных babynames и пытаюсь выяснить, какие имена были самыми популярными, но проблема, с которой я сталкиваюсь, состоит в том, что одни и те же имена появляются более одного раза (потому что это топ-имена по годам), поэтому я хочу выяснить, как объединить одинаковые имена в одно, чтобы не сталкиваться с этой проблемой.
Это то, с чем я сейчас работаю (чтобы не испортить больший набор данных).
> baby.sub
# A tibble: 10 x 5
year sex name n prop
<dbl> <chr> <chr> <int> <dbl>
1 1947 F Linda 99686 0.0548
2 1948 F Linda 96209 0.0552
3 1947 M James 94756 0.0510
4 1957 M Michael 92695 0.0424
5 1947 M Robert 91642 0.0493
6 1949 F Linda 91016 0.0518
7 1956 M Michael 90620 0.0423
8 1958 M Michael 90520 0.0420
9 1948 M James 88588 0.0497
10 1954 M Michael 88514 0.0428
Я попытался сопоставить те же имена с этим:
baby.sub %>%
str_match("[:alpha:]")
Я получил это:
> baby.sub %>%
+ str_match("[:alpha:]")
[,1]
[1,] "c"
[2,] "c"
[3,] "c"
[4,] "c"
[5,] "c"
Warning message:
In stri_match_first_regex(string, pattern, opts_regex = opts(pattern)) :
argument is not an atomic vector; coercing
Эта строковая функция явно не та, которую я ищу.У кого-нибудь есть идеи?
РЕДАКТИРОВАТЬ:
Ответ на комментарий: @Roman, да, я забочусь только об именах и n (общее количество детей, названных этим именем), независимо отгод или пол.Вот что я пытаюсь получить из кода
> baby.sub
# A tibble: 10 x 5
name n
<chr> <int>
1 Michael 362349
2 Linda 286911
3 James 183344
4 Robert 91642
5 James 88588
EDIT_2: решено!Спасибо!
baby.sub <- babynames %>%
arrange(-n) %>%
head(10)
baby.sub %>%
group_by(name) %>%
summarize(total.count = sum(n)) %>%
arrange(-total.count)
name total.count
<chr> <int>
1 Michael 362349
2 Linda 286911
3 James 183344
4 Robert 91642