r - 如何在同一数据集中(可能使用 stringr)合并具有相同名称的数据?
问题描述
我正在使用数据集 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
这个 stringr 函数显然不是我要找的那个。有没有人有任何想法?
编辑:
回复评论:@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
解决方案
您可以使用 group_by 并汇总每个名称的所有计数,如下所示:
library(tidyverse)
library(babynames)
babynames %>%
group_by(name) %>%
summarise(
total_count = sum(n)
)
推荐阅读
- automation - botium 中是否有任何方法可以使用表情符号来断言响应文本?
- flutter - 如何将 Flutter Webview 插件用于 PayPal 支付网关
- android - Android - 这是否必须在单独的 xml 文件中创建每个形状?
- ios - 如何从相机图像中获取深度数据
- angularjs - 如何在 Powershell 中使用 AngularJs 表单自动登录网站?
- unit-testing - 如何对锯齿形超级账本交易处理器进行单元测试
- python - 烧瓶问题 CORS 起源
- python-3.x - 为什么推导 db 变为负数?
- javascript - 根据返回值设置默认活动选项卡和任务
- wordpress - 将数据从 csv 导入特定帖子