The following code creates variables listsincome, logincome and ed.level and replaces NA’s with “no answer” for each factor variables with missing values. It does this before splitting the data into training and test sets so that any models you make based on these variables will be able to make predictions on the test set.
profiles$listsincome[!is.na(profiles$income)] <- 1
profiles$listsincome[is.na(profiles$income)] <- 0
profiles$logincome <- ifelse(profiles$listsincome, log(profiles$income, base=10),0)
profiles$ed.level <- 14
profiles[grepl("high school",profiles$education),"ed.level"] <- 12
profiles[grepl("two-year",profiles$education),"ed.level"] <- 14
profiles[grepl("college",profiles$education),"ed.level"] <- 16
profiles[grepl("masters",profiles$education),"ed.level"] <- 18
profiles[grepl("law school",profiles$education),"ed.level"] <- 19
profiles[grepl("med",profiles$education),"ed.level"] <- 20
profiles[grepl("ph.d",profiles$education),"ed.level"] <- 21
profiles[grepl("dropped",profiles$education),"ed.level"] <-
profiles[grepl("dropped",profiles$education),"ed.level"] -2
profiles$body_type <- as.factor(ifelse(is.na(profiles$body_type), "no answer", as.character(profiles$body_type)))
profiles$diet <- as.factor(ifelse(is.na(profiles$diet), "no answer", as.character(profiles$diet)))
profiles$drinks<- as.factor(ifelse(is.na(profiles$drinks), "no answer", as.character(profiles$drinks)))
profiles$drugs<- as.factor(ifelse(is.na(profiles$drugs), "no answer", as.character(profiles$drugs)))
profiles$education<- as.factor(ifelse(is.na(profiles$education), "no answer", as.character(profiles$education)))
profiles$ethnicity<- as.factor(ifelse(is.na(profiles$ethnicity), "no answer", as.character(profiles$ethnicity)))
profiles$job<- as.factor(ifelse(is.na(profiles$job), "no answer", as.character(profiles$job)))
profiles$offspring<- as.factor(ifelse(is.na(profiles$offspring), "no answer", as.character(profiles$offspring)))
profiles$orientation<- as.factor(ifelse(is.na(profiles$orientation), "no answer", as.character(profiles$orientation)))
profiles$pets<- as.factor(ifelse(is.na(profiles$pets), "no answer", as.character(profiles$pets)))
profiles$religion<- as.factor(ifelse(is.na(profiles$religion), "no answer", as.character(profiles$religion)))
profiles$sex<- as.factor(ifelse(is.na(profiles$sex), "no answer", as.character(profiles$sex)))
profiles$sign<- as.factor(ifelse(is.na(profiles$sign), "no answer", as.character(profiles$sign)))
profiles$smokes<- as.factor(ifelse(is.na(profiles$smokes), "no answer", as.character(profiles$smokes)))
profiles$status<- as.factor(ifelse(is.na(profiles$status), "no answer", as.character(profiles$status)))
train <- filter(profiles, set=="train")
test <- filter(profiles, set=="test")