[R] Creating New Variable Using Ifelse
Courtney Benjamin
cbenjami at BTBOCES.ORG
Thu Aug 10 05:54:54 CEST 2017
Hello R Help List,
I am an R novice and trying to use the ifelse function to create a new binary variable based off of the responses of two other binary variables; NAs are involved. I pulled it off almost successfully, but when I checked the counts of my new variable for accuracy, I found that a small portion of the NA cases were not being passed through as NAs, but as "0" counts in my new variable. My many attempts at creating a nested ifelse statement that would pass the NAs through properly have not been successful. Any help is greatly appreciated.
Here is a MRE:?
library(RCurl)
data <- getURL("https://raw.githubusercontent.com/cbenjamin1821/careertech-ed/master/elsq2wbl.csv")
elsq2wbl <- read.csv(text = data)
##Recoding Negative Responses to NA
elsq2wbl [elsq2wbl[, "EVERRELJOB"] < -3, "EVERRELJOB"] <- NA
elsq2wbl [elsq2wbl[, "PSWBL"] < -2, "PSWBL"] <- NA
#Labeling categorical variable levels
elsq2wbl$EVERRELJOB <- factor(elsq2wbl$EVERRELJOB, levels = c(0,1), labels = c("No","Yes"))
elsq2wbl$PSWBL <- factor(elsq2wbl$PSWBL, levels = c(0,1), labels = c("No","Yes"))
##Trying to create a new variable to indicate if the student had a job
#related to the college studies that was NOT a WBL experience
elsq2wbl$NONWBLRELJOB <- ifelse(elsq2wbl$PSWBL=="No" & elsq2wbl$EVERRELJOB=="Yes",1,0)
#Cross tab to check counts of two variables that new variable is based upon
xtabs(~PSWBL+EVERRELJOB,subset(elsq2wbl,BYSCTRL==1&G10COHRT==1),addNA=TRUE)
#Checking count of newly created variable
Q2sub <- subset(elsq2wbl,BYSCTRL==1&G10COHRT==1)
library(plyr)
count(Q2sub,'NONWBLRELJOB')
#The new variable has the correct count of "1", but 88 cases too many for "0"
#The cross tab shows 20 and 68 NA cases that are being incorrectly counted as "0" in the new variable
#My other approach at trying to handle the NAs properly-returns an error
elsq2wbl$NONWBLRELJOB <- ifelse(elsq2wbl$PSWBL=="No" & elsq2wbl$EVERRELJOB=="Yes",1,ifelse(is.na(elsq2wbl$PSWBL)&is.na(elsq2wbl$EVERRELJOB),NA,
ifelse(elsq2wbl$PSWBL!="No" & elsq2wbl$EVERRELJOB!="Yes",0)))
Courtney Benjamin
Broome-Tioga BOCES
Automotive Technology II Teacher
Located at Gault Toyota
Doctoral Candidate-Educational Theory & Practice
State University of New York at Binghamton
cbenjami at btboces.org<mailto:cbenjami at btboces.org>
607-763-8633
[[alternative HTML version deleted]]
More information about the R-help
mailing list