在R中一次将多个文本转换为文本锚定为数字因子

时间:2018-10-21 00:09:33

标签: r

我拥有的数据集将每个参与者的变量数据显示为文本选项,而不是仅数字值。例如,如果变量的答案选择是:

<div class="grid">
  <div class="cell">Lorem ipsum dolor. Lorem ipsum dolor. Lorem ipsum dolor. Lorem ipsum dolor.</div>
  <div class="cell">Lorem ipsum dolor. Lorem ipsum dolor. Lorem ipsum dolor. Lorem ipsum dolor.</div>
  <div class="cell">Lorem ipsum dolor. Lorem ipsum dolor. Lorem ipsum dolor. Lorem ipsum dolor.</div>
  <div class="cell">Lorem ipsum dolor. Lorem ipsum dolor. Lorem ipsum dolor. Lorem ipsum dolor.</div> 
</div>
<div class="grid">
  <div class="cell">Lorem ipsum dolor. Lorem ipsum dolor. Lorem ipsum dolor. Lorem ipsum dolor.</div>
  <div class="cell">Lorem ipsum dolor. Lorem ipsum dolor. Lorem ipsum dolor. Lorem ipsum dolor.</div>
</div>

那么选择第一个选项的人的数据将显示为:

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

而不是

(1) A little

易于分析的地方。数据集源提供了一个R代码,可将文本转换为此处给出的数字值:

1

尽管这可行,但我被降级为每个变量一个接一个地执行。数据集中有超过400个变量,并且有多个数据集可以使用。有没有一种方法可以调整代码,以便将数据集中每个变量的文本因子更改为数字因子,而不必一个个地做到这一点?

1 个答案:

答案 0 :(得分:1)

假设您有以下数据:

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