r - Assign value lable to the shaping of a varibale -


i have data frame "cb" column"gender" 2 variables "male" , "female". want "male" gets value 0 , female gets value 1.

i did this:

cb$gender <- ifelse(cb$gender == "male", 0, ifelse(cb$gender == "female", 1,  999)) 

when @ column result:

head(cb$gender, 3) [1] 1 0 0 

that´s fine!

when make table result:

table(cb$gender)    0    1  3555 3488  

i want 0 says "male" , 1 says "female"

for better understanding:

in spss possible assign value 0 "male" , value 1 "female". when print table looks this:

male female 3555 3488  

but column looks this:

gender 0 1 1 0 

this want.

thank you!

you can use factor turn variable factor , label it:

cb <- data.frame(gender= c("male", "female", "male", "male", "female", "female", "male", "male")) cb$gender <- ifelse(cb$gender == "male", 0, ifelse(cb$gender == "female", 1, 999)) str(cb) #'data.frame':  8 obs. of  1 variable: # $ gender: num  0 1 0 0 1 1 0 0 cb$gender <- factor(cb$gender ,                 labels=c("male", "female")) str(cb) #'data.frame':  8 obs. of  1 variable: # $ gender: factor w/ 2 levels "male","female": 1 2 1 1 2 2 1 1 table(cb$gender) #male female  #   5      3  

note: r turning factors assigns levels 1 (in case 1 & 2)

alternatively, use packages lfactors:

library(lfactors) cb <- data.frame(gender= c("male", "female", "male", "male", "female", "female", "male", "male")) cb$gender <- ifelse(cb$gender == "male", 0, ifelse(cb$gender == "female", 1, 999)) cb$gender <- lfactor(cb$gender,                  levels=0:1,                  labels=c("male", "female")) print(cb$gender) #[1] male   female male   male   female female male   male   #levels: male female #numeric levels: 0 1  table(cb$gender) #  male female  #     5      3  attributes(cb$gender)$llevels #[1] 0 1 

yet option, closest spss analogy, use package labelled , sjmisc follows:

library(labelled) library(sjmisc) #access function to_label() cb <- data.frame(gender= c("male", "female", "male", "male", "female", "female", "male", "male")) cb$gender <- ifelse(cb$gender == "male", 0, ifelse(cb$gender == "female", 1, 999)) val_labels(cb$gender) <- c("male" = 0, "female" = 1) print(cb$gender) #<labelled double> #[1] 0 1 0 0 1 1 0 0 #labels: # value  label #     0   male #     1 female table(to_label(cb$gender)) #  male female  #     5      3  

also, can use combination of packages sjmisc , sjlabelled.

library(sjmisc) #access function to_label() library(sjlabelled) #function set_labels() cb <- data.frame(gender= c("male", "female", "male", "male", "female", "female", "male", "male")) cb$gender <- ifelse(cb$gender == "male", 0, ifelse(cb$gender == "female", 1, 999)) cb$gender <- set_labels(cb$gender, labels=c("male", "female")) print(cb$gender) #[1] 0 1 0 0 1 1 0 0 #attr(,"labels") #  male female  #     0      1  table(to_label(cb$gender)) #  male female  #     5      3  

the function to_label() works packages lfactors, labelled , sjlabelled.


Comments

Popular posts from this blog

PHP and MySQL WP -

android - InAppBilling registering BroadcastReceiver in AndroidManifest -

go - golang pprof for c library code -