Запустить функцию через несколько столбцов - PullRequest
0 голосов
/ 18 марта 2019

Я пытаюсь очистить извлеченную мне информацию из шестидесяти столбцов.Часть данных составляет около тридцати столбцов, которые представлены как значения «Да» или «Нет», которые я хотел бы преобразовать в логический тип.Поэтому не каждый столбец во фрейме данных, но их много.В настоящее время я делаю эквивалент этого:

mtcars %>%
  mutate(mpg = as.character(mpg)) %>%
  mutate(cyl = as.character(cyl)) %>%
  mutate(disp = as.character(disp)) %>%
  mutate(hp = as.character(hp))

То есть вручную мутировать каждый столбец в списке.Но такое чувство, что он будет подвержен ошибкам из-за отсутствия копирования-вставки или чего-то подобного.Есть ли функция, которая может сделать это за один шаг, передав список имен полей?Я склоняюсь к использованию по умолчанию функций tidyverse, хотя база R также работает при необходимости.

Ответы [ 2 ]

1 голос
/ 18 марта 2019

Это должен быть дубликат, но сейчас вы не можете найти соответствующую запись.

Мы можем использовать mutate_at и применять функцию к выбранным столбцам

library(dplyr)
mtcars %>% mutate_at(vars(mpg, cyl, disp, hp), as.character)

Или, если у нас есть имена столбцов, хранящиеся в векторе с именем cols, мы можем сделать

cols <- c("mpg", "cyl", "disp", "hp")
mtcars %>% mutate_at(cols, as.character)
0 голосов
/ 18 марта 2019

Возможно, вы можете использовать lapply()?

lapply(mtcars, as.character)

Если вы хотите, чтобы ваши данные были в качестве фрейма данных:

df = as.data.frame( lapply(mtcars, as.character), stringsAsFactors = F )

> df$mpg
 [1] "21"   "21"   "22.8" "21.4" "18.7" "18.1" "14.3" "24.4" "22.8"
[10] "19.2" "17.8" "16.4" "17.3" "15.2" "10.4" "10.4" "14.7" "32.4"
[19] "30.4" "33.9" "21.5" "15.5" "15.2" "13.3" "19.2" "27.3" "26"  
[28] "30.4" "15.8" "19.7" "15"   "21.4"

> df$cyl
 [1] "6" "6" "4" "6" "8" "6" "8" "4" "4" "6" "6" "8" "8" "8" "8" "8"
[17] "8" "4" "4" "4" "4" "8" "8" "8" "8" "4" "4" "4" "8" "6" "8" "4"

> df$disp
 [1] "160"   "160"   "108"   "258"   "360"   "225"   "360"   "146.7"
 [9] "140.8" "167.6" "167.6" "275.8" "275.8" "275.8" "472"   "460"  
[17] "440"   "78.7"  "75.7"  "71.1"  "120.1" "318"   "304"   "350"  
[25] "400"   "79"    "120.3" "95.1"  "351"   "145"   "301"   "121"  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...