/ / R code: jak wygenerować zmienną na podstawie wielu warunków z innych zmiennych - r

Kod R: jak wygenerować zmienną na podstawie wielu warunków z innych zmiennych - r

Mam początkującego użytkownika R:

To jest mój zbiór danych

factor1 <- c(1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8,8,9, 9, 10, 10)
factor2 <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,16,17, 18, 19, 20)
factor3 <- c("a", "a", "a", "a", "a", "b", "b", "b", "b", "b", "c", "c", "c", "c", "c", "d", "d", "d", "d", "d")
factor4 <- c(10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150,160,170, 180, 190, NA)
dataset <- data.frame(factor1, factor2, factor3, factor4)

W ten sposób utworzyłem nową zmienną:

dataset$newvar <-"NA"

Jak wykonać następujące czynności:

Chcę, aby newvar przyjął wartość 1, jeśli factor1> = 5, a factor2 <19 i (factor3 = "b" lub factor3 = "c"), a factor4 różni się od braku, a newvar jest równe brakowi

Idealnie chcę określić różne warunki, więc niektóre obserwacje będą wartością 1, 2, 3 i 4 w zmiennej newvar zależnej od wartości kilku innych zmiennych.

Jest to bardzo proste i intuicyjne w STATA i chciałby wiedzieć, czy istnieje prosty i intuicyjny sposób, aby zrobić to samo w R.

Odpowiedzi:

1 dla odpowiedzi № 1

W bazie R możesz po prostu zrobić (promując mój komentarz do odpowiedzi):

dataset$newvar <- NA
dataset[dataset$factor1 >= 5 & dataset$factor2 < 19 & (dataset$factor3=="b" | dataset$factor3 =="c"), "newvar"] <- 1

lub:

dataset$newvar <- NA
indx <- dataset$factor1 >= 5 & dataset$factor2 < 19 & (dataset$factor3=="b" | dataset$factor3 =="c") & !is.na(dataset$factor4)
dataset[indx, "newvar"] <- 1

0 dla odpowiedzi nr 2

Za pomocą dplyr

library(dplyr)

dataset %>%
mutate(newvar = ifelse(factor1 > 5 &
factor2 < 19 &
(factor3=="b" | factor3=="c") &
!is.na(factor4), 1, NA))