首页 > 解决方案 > 合并具有拼写错误变量的重复行

问题描述

我只是在学习 R(和 dplyr),并且遇到了一个可能很简单的问题,尽管我花了几个小时研究却没有答案。我在数据框中 有两列, A(字符)和(整数)。B

由于原始数据中的拼写错误(在 A 列中),数据框包含额外的行,因此必须将许多行折叠成单行(同时sum()在列中折叠它们的整数值(通过)B)。

例如,可能有三行应该是一:

汽车.........MPG

马自达............5

马自达...... 2

马自达…………1

应该

车…………MPG

马自达............ 8

我正在使用dplyr, 并试图找到可以折叠具有相似字符(例如三个字母)的行并将管道返回到原始表中的方式。

任何想法或方向,最好使用基础 R 或 dplyr 将不胜感激。

标签: rmergedplyr

解决方案


DF使用末尾注释中可重复显示的输入,使用或phonics 包soundex中的其他函数之一为每个 CAR 派生一个密钥,然后通过密钥进行汇总:

library(dplyr)
library(phonics)

DF %>% 
  group_by(key = soundex(CAR)) %>%
  summarize(CAR = toString(CAR), MPG = sum(MPG)) %>%
  ungroup %>%
  select(-key)

给予:

# A tibble: 1 x 2
  CAR                   MPG
  <chr>               <int>
1 Mazda, Mazzda, Mzda     8

笔记

Lines <- "CAR MPG
Mazda 5
Mazzda 2
Mzda 1"
DF <- read.table(text = Lines, header = TRUE, as.is = TRUE, strip.white = TRUE)

推荐阅读