2016-06-09 1 views
1

J'ai une trame de données avec 3 colonnes. Le premier a les noms de mes catégories, le second (q2) et le troisième (q3) contiennent d'autres facteurs. Es:Tableau des contingences avec le nom des facteurs au lieu des chiffres

q1 q2 q3 
A w y 
G x x 
F y z 

J'utilise

t1 <- xtabs(~q2+q3, data=db) 

pour créer un tableau de contingence et savoir combien de catégories il y a combo.

Comment puis-je obtenir dans les cellules d'itération les noms des facteurs qui sont dans la colonne q1?

 x y z 
    w 0 1 0 
    x 1 0 0 
    y 0 0 1 

Dans l'exemple, au lieu de 1, je veux A, G ou F.

+0

Avez-vous essayé 'dcast', c'est-à-dire' library (reshape2); dcast (df1, q2 ~ q3, value.var = "q1") ' – akrun

+0

Cela semble fonctionner si c'est seulement un facteur par combinaison ... Fonction d'agrégation manquante: par défaut à la longueur – Marco

+0

Dans ce cas, vous devez ajouter une séquence colonne groupée par les variables, puis faites 'dcast'. Il y a beaucoup de dupes pour ce cas aussi. – akrun

Répondre

0

Une option est d'attribuer q1 à l'aide t1q2 et q3 comme indices.

> dn <- lapply(db[2:3], levels) 
> t1 <- array(NA, lengths(dn), dn) 
> t1[cbind(db$q2, db$q3)] <- levels(db$q1)[db$q1] 
> t1 
    q3 
q2 x y z 
    w NA "A" NA 
    x "G" NA NA 
    y NA NA "F"