2015-03-22 1 views
0

R, hochetR, hochet, recoder

voici mes données:

KK<- c('yes','no','yes','yes','dp') 
LL<- c('dp','no','yes','yes','no') 
II<- c('yes','dp','no','no','no') 
JJ<- c('yes','no','yes','yes','dp') 
AA<- c('no','dp','yes','yes','yes') 
MYDATA <- data.frame(KK,LL,II,JJ,AA);MYDATA 

cible:

recodage 「pas」 à 「0.0」

recoder 「y es 」pour「1.0」

recodage「dp」à「0,5」

Question: comment puis-je recoder en r avec le paquet「hochet」

Répondre

1

Nous pouvons convertir 'MYDATA' en 'matrice', changer la classe 'character' en 'factor' en spécifiant les labels à '0.5, 0, 1' en fonction de l'ordre des niveaux et l'assigner à 'MYDATA' . [] assurera que la structure reste la même.

MYDATA[] <- as.numeric(as.character(factor(as.matrix(MYDATA), 
          labels=c(0.5, 0, 1)))) 

MYDATA 
# KK LL II JJ AA 
#1 1.0 0.5 1.0 1.0 0.0 
#2 0.0 0.0 0.5 0.0 0.5 
#3 1.0 1.0 0.0 1.0 1.0 
#4 1.0 1.0 0.0 1.0 1.0 
#5 0.5 0.0 0.0 0.5 1.0 
+0

Merci pour votre aide. – fish

2

En supposant que vous êtes à la recherche d'un résultat numérique:

(MYDATA == "dp")/2 + (MYDATA == "yes") 

donnant:

 KK LL II JJ AA 
[1,] 1.0 0.5 1.0 1.0 0.0 
[2,] 0.0 0.0 0.5 0.0 0.5 
[3,] 1.0 1.0 0.0 1.0 1.0 
[4,] 1.0 1.0 0.0 1.0 1.0 
[5,] 0.5 0.0 0.0 0.5 1.0 
+0

Merci pour votre aide. – fish