В R: я хотел бы изменить факторную переменную на числовую c переменную - PullRequest
0 голосов
/ 02 апреля 2020

Из онлайн-опроса я получил кучу данных. Некоторые элементы, на которые дан ответ «Да» или «Нет».

Для анализа я хотел бы изменить «Да» на 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 голосов
/ 02 апреля 2020

Довольно много способов снять шкуру с этой кошки. Вот несколько идей.

Давайте сначала сгенерируем некоторые данные:

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

Последние более устойчивы, если у вас есть другие варианты в дополнение к Да / Нет.

0 голосов
/ 02 апреля 2020

Может быть с 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
...