r - 使用 R 中键的模糊匹配组合行
问题描述
我有一个数据集,其中可能包含一些非常相似的键——比如每个电子邮件地址的一行数据john.doe@foo.com
和john.m.doe@foo.com
. 如何组合类似命名的键并在 R 中进行聚合?
样本输入
|Email | Subscriptions |
-------------------------------------
|john.doe@foo.com | 10 |
|john.m.doe@foo.com | 11 |
|jane.doe@foo.com | 20 |
预期结果
|Email | Subscriptions |
-------------------------------------
|john.doe@foo.com | 21 |
|jane.doe@foo.com | 20 |
我知道agrep
并且很少有其他库可以进行模糊匹配,但是我如何使用它来组合数据集中的行?
解决方案
这是agrep
与 结合使用的一种方法dplyr
:
df <- data.frame(mail = c("john.doe@foo.com", "john.m.doe@foo.com", "jane.doe@foo.com"),
sub = c(10, 11, 20))
df %>%
rowwise() %>%
mutate(new = paste(agrep(mail, df$mail, max = 2, ignore.case = TRUE), collapse = ",")) %>%
group_by(new) %>%
mutate(sub = sum(sub)) %>%
slice(1)
mail sub new
<fct> <dbl> <chr>
1 john.doe@foo.com 21 1,2
2 jane.doe@foo.com 20 3
推荐阅读
- apache-spark - 一次性在 spark 数据帧上执行多个聚合,而不是多个慢速连接
- assembly - 64 位或使用 64 位寄存器的地址大小覆盖前缀
- scala - Scala嘲笑这种行为
- typescript - 在 Visual Studio 中将 typescript 错误报告为警告,并且不会使构建失败
- spring - 如何从 MONO/FLUX 中提取字符串值 -
- laravel - 从 json 获取嵌套数组的值
- c# - WPF 按钮效果
- android - org.jetbrains.kotlin.util.KotlinFrontEndException:分析表达式时出现异常
- css - CSS级联起源和重要性的优先级
- r - 如何通过固定列合并两个数据框