我拥有的数据集将每个参与者的变量数据显示为文本选项,而不是仅数字值。例如,如果变量的答案选择是:
<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个变量,并且有多个数据集可以使用。有没有一种方法可以调整代码,以便将数据集中每个变量的文本因子更改为数字因子,而不必一个个地做到这一点?
答案 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