在R中:我想将因子变量更改为数字变量

时间:2020-04-02 10:26:58

标签: r numeric

通过在线调查,我获得了大量数据。有些项目回答为“是”或“否”。

为便于分析,我想将“是”更改为1,将“否”更改为0。

我该怎么做?

我尝试了以下操作:但这显然是错误的方法...。

working_data$Schulabschluss_Mutter <- factor(working_data$F108, levels=c("Yes", "No",), labels=c(0,1))

我也尝试过:

working_data$Schulabschluss_Mutte[working_data$F108 == "Yes"] <- 1

也不起作用

2 个答案:

答案 0 :(得分:0)

也许和ifelse()在一起?

working_data$Schulabschluss_Mutter <- ifelse(working_data$F108 == "Yes", 1, 0)

一个例子:

a <- c("Yes", "Yes", "No")
b <- c(1:3)

df <- data.frame(a,b)

df$c <- ifelse(ab$a == "Yes", 1, 0)

输出:

> df
    a b c
1 Yes 1 1
2 Yes 2 1
3  No 3 0

答案 1 :(得分:0)

有很多方法可以给这只猫蒙皮。这里有一些想法。

首先生成一些数据:

structure(list(F108 = structure(c(2L, 2L, 1L, 1L), .Label = c("No",
"Yes"), class = "factor")), row.names = c(NA, -4L), class = "data.frame") -> df

在许多情况下,我发现自己正在这样做:

df$Schulabschluss_Mutter <- 0
df$Schulabschluss_Mutter[df$F108 == 'Yes'] <- 1

如果您确定在F108列中仅输入“是”和“否”,但效果不是很好,则此方法很好用。

您还可以创建一个新列并重置因子水平,例如:

df$Schulabschluss_Mutter <- as.factor(df$F108)
levels(df$Schulabschluss_Mutter) <- c('0','1')

或者在dplyr中:

library(tidyverse)
df %>% mutate(Schulabschluss_Mutter = recode(df$F108, `No`="0",`Yes`="1")) -> df

如果您是“是/否”之外的其他选项,则后者会更强大