9
votes

Création de variables catégoriques à partir de variables factices mutuellement exclusives

Ma question concerne une élaboration sur une question précédemment répondue sur Combinaison de plusieurs Variables factices en une seule variable catégorique .

Dans la question demandée précédemment, la variable catégorique a été créée à partir de variables factices qui n'étaient pas mutuellement exclusives. Pour mon cas, mes variables factices sont mutuellement exclusives car elles représentent des conditions expérimentales croisées dans une conception factorielle entre 2x2 entre les sujets (qui contient également un composant des matières que je ne réponds pas ici), donc je ne pense pas interaction code> fait ce que je dois faire. P>

Par exemple, mes données peuvent ressembler à ceci: p> xxx pré>

J'aimerais maintenant faire des variables catégoriques qui se combinent à différents types de conditions. Par exemple, les personnes qui avaient des valeurs pour la condition A et B pourraient être codées avec une variable catégorique et des personnes qui avaient des valeurs pour la condition C et D. P> xxx pré>

en ce moment, je 'M faisant ceci en utilisant ifelse () code> déclarations, ce qui est tout simplement un désordre chaud (et ne fonctionne pas toujours). S'il vous plaît aider! Il y a probablement une "voie plus facile" super évidente " p>

edit: p>

Les types de ifelse code> Les commandes que j'utilise sont les suivantes: p >

attach(df)
df$factor<-ifelse(conditionA==1 | conditionB==1, 1, NA)
df$factor<-ifelse(conditionA==2 | conditionB==2, 2, df$factor)


0 commentaires

3 Réponses :


1
votes

Eh bien, je pense que vous pouvez le faire simplement avec ifelse , quelque chose comme: xxx

Une autre solution pourrait être: xxx < / pré>

et une troisième solution, certainement plus pratical si vous avez plus de deux conditions de colonnes: xxx


1 commentaires

Salut @ juba - j'aime la simplicité de la troisième solution ... mais comment modifier toutes les colonnes pertinentes en numériques si r les lit sous forme de facteur? La commande df [cols] <- AS.numérique (AS.Matrix (DF [COLS])) ne semble pas fonctionner (lorsque cols est une liste de colonnes Nombres).



1
votes

Je pense que cette fonction vous donne ce dont vous avez besoin (certes, c'est un piratage rapide).

tbl <- read.table(header=TRUE, text="
conditionA    conditionB    conditionC     conditionD
NA            1             NA             NA
1             NA            NA             NA
NA            NA            1              NA
NA            NA            NA             1
NA            2             NA             NA
2             NA            NA             NA
NA            NA            2              NA
NA            NA            NA             2")
tbl <- data.frame(tbl)

(tbl <- cbind(tbl,
              factor1=to_indicator(tbl, c("conditionA", "conditionB")),
              factor2=to_indicator(tbl, c("conditionC", "conditionD"))))


0 commentaires

6
votes

mise à jour (2019): veuillez utiliser dplyr :: coalesce () code > , ça marche à peu près la même chose. P>

mon r package a une fonction de commodité qui permet de choisir le premier non- NA Code> Valeur de chaque élément dans une liste de vecteurs: P> xxx pré>

(Je ne sais pas si cela fonctionne si conditionné code> et conditionné code> sont des facteurs. Convertissez-les en numérics avant d'utiliser as.numeric (tel.character (...)) code> si nécessaire.) p>

sinon, vous pouvez Donner interaction code> Essayer, combiné avec recodage des niveaux du facteur résultant - mais à moi, il semble que vous n'êtes plus intéressé par la première solution: P>

df$conditionAB <- with(df, interaction(coalesce.na(conditionA, 0), 
                                       coalesce.na(conditionB, 0)))
levels(df$conditionAB) <- c('A', 'B')


6 commentaires

Merci! Bonne prise ... une faute de frappe dans les 2 dernières lignes lorsque je faisais des données d'échantillonnage.


@Roody: Code conditionné contient la valeur, par exemple, 3? Que devrait-il arriver alors?


Non, ce sont toutes les deux variables de facteur de niveau - 1 et 2 ne sont que les valeurs qui leur sont attribuées par qualicé, mais c'est toujours un choix dichtomique.


Bonjour, j'ai ajouté plus d'exemples. R ne me permettra pas d'installer votre colis, cependant. Cela me donne une erreur indiquant SH: Make: Commande introuvable Erreur: La compilation a échoué pour le package 'KIMISC'


@Roody: Êtes-vous sur Windows? Ensuite, vous devrez peut-être installer RTools . Sinon, installez la boîte à outils GNU ( faire , g ++ , ...). Ou simplement copier le code de ici ...


@Roody, une autre façon de remerciement est de Up-vote réponses utiles.