here dataset:
> data<-read.csv(file.choose()) > data$maxdate<-as.character(data$maxdate) > data$batch<-gsub(" ", "\\.",data$batch) > p<-data[1:5,] > p managername employee.name employee.id maxdate batch 1 abarrientos, claire vinnikov, olga 32403 8/11/2015 batch.47 2 adel, bonnie adams, tracy 201850 3 adel, bonnie black, chantal 213746 7/29/2011 batch.17 4 adel, bonnie brandoli, morena 201990 7/29/2011 batch.17 5 adel, bonnie campbell, melissa 201931 x.new.employee.ehs.document.sign.off batch.01 batch.02 batch.03 batch.04 1 1 na na na na 2 na 1 1 1 1 3 1 1 1 1 1 4 1 1 1 1 1 5 na 1 1 1 1 batch.06 batch.07 batch.08 batch.09 batch.10 batch.11 batch.18 batch.19 1 na na na na na na na na 2 1 1 1 1 1 1 1 1 3 1 1 1 1 1 1 1 1 4 1 1 1 1 1 1 1 1 5 1 1 1 1 1 1 1 1 batch.20 batch.22 batch.24 batch.25 batch.26 batch.27 batch.28 batch.29 1 na na na na na na na na 2 1 1 1 1 1 1 1 1 3 1 1 1 1 1 1 1 1 4 1 1 1 1 1 1 1 1 5 1 1 1 1 1 1 1 1 batch.30 batch.31 batch.32 batch.33 batch.34 batch.35 batch.36 batch.37 1 na na na na na na na na 2 1 1 1 1 1 1 1 1 3 1 1 1 1 1 1 1 1 4 1 1 1 1 1 1 1 1 5 1 1 1 1 1 1 1 1 batch.38 batch.39 batch.40 batch.41 batch.42 batch.43 batch.44 batch.45 1 na na na na na na na na 2 1 1 1 1 1 1 1 1 3 1 1 1 1 1 1 1 1 4 1 1 1 1 1 1 1 1 5 1 na na na na na na na batch.46 batch.47 1 na na 2 1 1 3 na na 4 1 1 5 na na
i'm novice r user , i'm trying figure out how change column values 1 given batch number. example, first row, batch number "batch.47". therefore, want replace values columns "batch.1", "batch.2", "batch.3" , way through "batch.47" "1". however, want rows have value of "1" under new.employee.sign.off column. second row, there no corresponding batch number because "adams, tracy" has "na" under employee sign-off. therefore, want particular row stay same. keep in mind not batch numbers included. example, there no batch number 13 17.
here's code far:
for (i in 1:nrow(p)) { if (p$x.new.employee.ehs.document.sign.off[i] == 1) { k<-which(colnames(p)==p$batch[i]) p[i,]<-replace(p[i,],6:k[i],1) i=i+1 } else if (is.na(p$x.new.employee.ehs.document.sign.off[i])) { i=i+1 } }
this produces following error:
error in if (p$x.new.employee.ehs.document.sign.off[i] == 1) { : missing value true/false needed
would appreciate guidance. appreciated , in advance!
here properties of data set:
> str(data) 'data.frame': 3372 obs. of 44 variables: $ managername : factor w/ 209 levels "abarrientos, claire",..: 1 2 2 2 2 2 2 2 2 2 ... $ employee.name : factor w/ 3371 levels "abas, ma cecilia",..: 3155 14 304 346 455 648 850 934 1021 1089 ... $ employee.id : factor w/ 3368 levels "(blank)","0",..: 3257 278 2025 359 325 3092 1695 2075 1043 1196 ... $ maxdate : chr "8/11/2015" "" "7/29/2011" "7/29/2011" ... $ batch : chr "batch.47" "" "batch.17" "batch.17" ... $ x.new.employee.ehs.document.sign.off: int 1 na 1 1 na 1 1 na na 1 ... $ batch.01 : int na 1 1 1 1 na 1 1 1 1 ... $ batch.02 : int na 1 1 1 1 na 1 1 1 1 ... $ batch.03 : int na 1 1 1 1 na 1 1 1 1 ... $ batch.04 : int na 1 1 1 1 na 1 1 1 1 ... $ batch.06 : int na 1 1 1 1 na 1 1 1 1 ... $ batch.07 : int na 1 1 1 1 na 1 1 1 1 ... $ batch.08 : int na 1 1 1 1 na 1 1 1 1 ... $ batch.09 : int na 1 1 1 1 na 1 1 1 1 ... $ batch.10 : int na 1 1 1 1 na 1 1 1 1 ... $ batch.11 : int na 1 1 1 1 na 1 1 1 1 ... $ batch.18 : int na 1 1 1 1 na 1 1 1 1 ... $ batch.19 : int na 1 1 1 1 na 1 1 1 1 ... $ batch.20 : int na 1 1 1 1 na 1 1 1 1 ... $ batch.22 : int na 1 1 1 1 na 1 1 1 1 ... $ batch.24 : int na 1 1 1 1 na 1 1 1 1 ... $ batch.25 : int na 1 1 1 1 na 1 1 1 1 ... $ batch.26 : int na 1 1 1 1 na 1 1 1 1 ... $ batch.27 : int na 1 1 1 1 na 1 1 1 1 ... $ batch.28 : int na 1 1 1 1 na 1 1 1 1 ... $ batch.29 : int na 1 1 1 1 na 1 1 1 1 ... $ batch.30 : int na 1 1 1 1 na 1 1 1 1 ... $ batch.31 : int na 1 1 1 1 na 1 1 1 1 ... $ batch.32 : int na 1 1 1 1 na 1 1 1 1 ... $ batch.33 : int na 1 1 1 1 na 1 1 1 1 ... $ batch.34 : int na 1 1 1 1 na 1 1 1 1 ... $ batch.35 : int na 1 1 1 1 na 1 1 1 1 ... $ batch.36 : int na 1 1 1 1 na 1 1 1 1 ... $ batch.37 : int na 1 1 1 1 na 1 1 1 1 ... $ batch.38 : int na 1 1 1 1 na na 1 1 1 ... $ batch.39 : int na 1 1 1 na na 1 1 1 1 ... $ batch.40 : int na 1 1 1 na na 1 1 1 1 ... $ batch.41 : int na 1 1 1 na na 1 1 1 1 ... $ batch.42 : int na 1 1 1 na na 1 1 1 1 ... $ batch.43 : int na 1 1 1 na na 1 1 1 1 ... $ batch.44 : int na 1 1 1 na na 1 1 1 1 ... $ batch.45 : int na 1 1 1 na na 1 1 1 1 ... $ batch.46 : int na 1 na 1 na na na na na 1 ... $ batch.47 : int na 1 na 1 na 1 1 1 na na ... >
colnames(p) -> clnames clnames[grep("batch.", x = clnames)] -> batchvec apply(p[,batchvec], 2, function(x) ifelse(p$x.new.employee.ehs.document.sign.off == 1, 1, 0) ) -> newp
then bind newp columns in p don't start "batch" etc..as in..
cbind(p[,"employee.sign"], newp)
Comments
Post a Comment