我有一个大约96000人的数据库,我正在尝试与另一个类似的数据库进行匹配。有些缺少ID号,因此我需要匹配列,但是数据有点混乱,包含尾随空格和奇怪的大写字母。
我正在使用 BBmisc软件包中的trimws()
和capatalizeStrings()
。但是只知道如何在单独的命名列上运行它们,例如
MDB$City<- capitalizeStrings(MDB$City,lower.back = T,all.words = T)
MDB$City<-trimws(MDB$City,which="both")
在包含字符数据的MDB中的每一列上是否有更简便的方法来运行这些功能?
答案 0 :(得分:0)
我们可以使用lapply
遍历多列,然后将输出分配回数据集的子集
MDB[nm1] <- lapply(MDB[nm1], function(x)
trimws(capitalizeStrings(x, lower.back = TRUE, all.words = TRUE), "both"))
其中
nm1 <- c("City", "OtherColumn1", "column2") #change the column names accordingly
答案 1 :(得分:0)
另一个选项是dplyr::mutate_if
。例如:
library(dplyr)
MDB %>%
mutate_if(is.character, trimws(which = "both"))