У меня есть этот набор данных с именем 'jobdata'
names <- c("person1", "person2", "person3")
job1_1_sector <- c("Private", "Public", "Private")
job2_1_sector <- c(NA, "Public", "Private")
job2_2_sector <- c("Private", "Public", "Other")
job3_1_sector <- c("Private", "Private", "Private")
job3_2_sector <- c("Other", "Public", "Other")
job3_3_sector <- c("Private", NA, "Private")
jobs <- cbind(job1_1_sector, job2_1_sector, job2_2_sector, job3_1_sector,
job3_2_sector, job3_3_sector )
jobdata <- data.frame(names, jobs)
И я хочу создать новую двоичную переменную private
, которая равняется 1, если по соответствующим переменным (то есть заданию [123] _ [123] _sector), если появляется слово Private. Затем еще один для Public
и еще один для Other
. Я понял, как использовать это с ifelse и grepl, но похоже, что мои строки кода действительно длинные. Есть ли более простой способ сделать это?
Этот код ниже дает мне код, который я хочу:
jobdata$private <- ifelse(grepl("Private", jobdata$job1_1_sector) | grepl("Private", jobdata$job2_1_sector) | grepl("Private", jobdata$job2_2_sector) | grepl("Private", jobdata$job3_1_sector) | grepl("Private", jobdata$job3_2_sector) | grepl("Private", jobdata$job3_3_sector), 1, 0)
jobdata$public <- ifelse(grepl("Public", jobdata$job1_1_sector) | grepl("Public", jobdata$job2_1_sector) | grepl("Public", jobdata$job2_2_sector) | grepl("Public", jobdata$job3_1_sector) | grepl("Public", jobdata$job3_2_sector) | grepl("Public", jobdata$job3_3_sector), 1, 0)
jobdata$other <- ifelse(grepl("Other", jobdata$job1_1_sector) | grepl("Other", jobdata$job2_1_sector) | grepl("Other", jobdata$job2_2_sector) | grepl("Other", jobdata$job3_1_sector) | grepl("Other", jobdata$job3_2_sector) | grepl("Other", jobdata$job3_3_sector), 1, 0)
Спасибо!