我正在学习R(和dplyr),并且可能有一个简单的问题,尽管我花了数小时没有答案。我在数据帧中有两列A
(字符)和B
(整数)。
由于原始数据的拼写错误(在A列中),数据框包含其他行,因此有很多行必须折叠为单行(同时也折叠了它们的整数值) (通过sum()
列中的B
)。
例如,可能有三行应该改为一行:
CAR ............. MPG
马自达...... 5
马兹达……2
Mzda .......... 1
应该是
CAR ........... MPG
马自达..... 8
我正在使用dplyr
,并试图找到一种方法来折叠具有相似字符(例如三个字母)的行,并通过管道返回到原始表中。
任何想法或指导,最好使用R或dplyr基。
答案 0 :(得分:1)
使用末尾注释中可重复显示的输入DF
,使用soundex
或phonics package中的其他功能之一为每个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)