I have this dataset called '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)
And I want to create a new binary variable private
that equals 1 if across the relevant variables (that is job[123]_[123]_sector) if the word Private comes up. Then another one for Public
and another one for Other
. I have figured out how to use this with ifelse and grepl but it looks like my lines of codes are really long. Is there an easier way to do this?
This code below gives me the code I want:
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)
Thanks!