Преобразование текстовых привязок в числовые коэффициенты для более чем одной переменной одновременно в R - PullRequest
0 голосов
/ 21 октября 2018

Набор данных, который я имею, показывает данные каждого участника для переменных в виде текстовой опции вместо только числового значения.Например, если варианты ответа на переменную:

1) A little
2) Somewhat
3) Not at all

, тогда у того, кто выберет первый вариант, будут отображаться его данные:

(1) A little

Вместо

1

Где было бы легко проанализировать.Источник набора данных предоставляет код R для преобразования текста в числовые значения, приведенные здесь:

library(prettyR)
lbls <- sort(levels(data$Variable1))
lbls <- (sub("^\\([0-9]+\\) +(.+$)", "\\1", lbls))
data$Variable1 <- as.numeric(sub("^\\(0*([0-9]+)\\).+$", "\\1", data$Variable1))
data$Variable1 <- add.value.labels(data$Variable1, lbls)

Хотя это работает, я вынужден делать это один за другим для каждой переменной.В наборе данных более 400 переменных, и есть несколько наборов данных для работы.Есть ли способ настроить код так, чтобы он заменял текстовый фактор на числовой для каждой переменной в наборе данных, вместо того, чтобы делать это один за другим?

1 Ответ

0 голосов
/ 21 октября 2018

Допустим, у вас есть эти данные:

data <- data.frame(stringsAsFactors = F,
  responses = c("1) A little", "2) Somewhat", "3) Not at all"),
  responses2 = c("2) Somewhat", "1) A little", "3) Not at all"),
  responses3 = c("2) Somewhat", "3) Not at all", "1) A little"))

Вот альтернатива вашему методу регулярного выражения:

readr::parse_number(data$responses)

Вот один способ применить это ко всем столбцам:

library(dplyr)
data %>%
  mutate_all(parse_number)

  responses responses2 responses3
1         1          2          2
2         2          1          3
3         3          3          1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...