如何在数据框中的多个列上运行函数?

时间:2019-04-29 05:10:56

标签: r

我有一个大约96000人的数据库,我正在尝试与另一个类似的数据库进行匹配。有些缺少ID号,因此我需要匹配列,但是数据有点混乱,包含尾随空格和奇怪的大写字母。

我正在使用 BBmisc软件包中的trimws()capatalizeStrings()。但是只知道如何在单独的命名列上运行它们,例如

MDB$City<- capitalizeStrings(MDB$City,lower.back = T,all.words = T)

MDB$City<-trimws(MDB$City,which="both")

在包含字符数据的MDB中的每一列上是否有更简便的方法来运行这些功能?

2 个答案:

答案 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"))