Как запустить функцию для нескольких столбцов в кадре данных? - PullRequest
1 голос
/ 29 апреля 2019

У меня есть база данных ~ 96000 человек, которую я пытаюсь сопоставить с другой подобной базой данных.У некоторых пропущены идентификационные номера, поэтому мне нужно сопоставлять столбцы, однако данные немного запутанны и содержат пробелы и странные заглавные буквы.

* Я использую trimws() и capatalizeStrings() из BBmisc package .Но только знаете, как запускать их в отдельных именованных столбцах, например,
MDB$City<- capitalizeStrings(MDB$City,lower.back = T,all.words = T)

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

Существует ли более простой способ запуска этих функций в каждом столбце в MDB, который содержит символьные данные?

Ответы [ 2 ]

0 голосов
/ 29 апреля 2019

Другой вариант - dplyr::mutate_if. Например:

library(dplyr)

MDB %>%
  mutate_if(is.character, trimws(which = "both"))
0 голосов
/ 29 апреля 2019

Мы можем использовать 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...