Fonction table sur 3-4 colonne

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Charles Marcucci
Messages : 52
Enregistré le : 13 Juil 2016, 09:00

Fonction table sur 3-4 colonne

Messagepar Charles Marcucci » 07 Juil 2017, 14:32

Bonjour à tous

J'ai besoins de votre aide car je m'arrache les cheveux.

J'ai un data.frame avec 212 variables et 116 observations

J'ai 5 colonnes qui se nomment respectivement Type.EI_X avec X de 1 à 5.
Dans chaque colonne Type.EI_X j'ai 8 effets indésirables possibles. EICUT , EIHEM ....

Je souhaiterai savoir combien de EICUT j'ai en tout sur les 5 colonnes.
Je peux faire table(dtf$Type.EI_1) (dtf$Type.EI_2)... regarder les valeurs pour chaque type EI et faire une somme à la main mais je me dit que R dois savoir faire ça .


J'ai essayer de remplir un vecteur,puis de faire un table (vecteur), en collant les colonnes les une sous les autres avec une boucle for mais ça ne fonctionne absolument pas , soit j'ai des chiffres soit j'ai une seule valeur qui est remplie.
Vecteur[1:116]<-Type.EI_1
vecteur[117:233]<-Type.EI_2


Comment est-ce que je peux faire ?

Merci d'avance

Charles Marcucci
Messages : 52
Enregistré le : 13 Juil 2016, 09:00

Re: Fonction table sur 3-4 colonne

Messagepar Charles Marcucci » 07 Juil 2017, 14:44

Ok donc il a suffit que je poste ma question pour que ma boucle marche ....

Je sais pas ce qui c'est passé mais ca fonctionne mnt

Code : Tout sélectionner

EI<-vector("character",1000)

for (i in 1:54)
{
  EI[i]<-levels(Ipilimumab$Type.EI_1)[Ipilimumab$Type.EI_1[i]]
  EI[i+54]<-levels(Ipilimumab$Type.EI_2)[Ipilimumab$Type.EI_2[i]]
  EI[i+54+54]<-levels(Ipilimumab$Type.EI_3)[Ipilimumab$Type.EI_3[i]]
  EI[i+54+54+54]<-levels(Ipilimumab$Type.EI_4)[Ipilimumab$Type.EI_4[i]]
  EI[i+54+54+54+54]<-levels(Ipilimumab$Type.EI_5)[Ipilimumab$Type.EI_5[i]]
 
}

Gabriel Terraz
Messages : 591
Enregistré le : 26 Sep 2011, 15:11

Re: Fonction table sur 3-4 colonne

Messagepar Gabriel Terraz » 07 Juil 2017, 15:05

Salut,
Ça marche, mais c'est pas beau ;)

Essaie ça pour voir :

Data bidons :

Code : Tout sélectionner

valeurs <- c("EICUT" , "EIHEM", "autre", "other")
simu = function() sample(valeurs, 5, rep=T)
 df <- data.frame(b = rnorm(5),typ3 = simu(), typ7 = simu(), typ1= simu(), a = 1:5)
df
           b  typ3  typ7  typ1 a
1 -0.4398432 EIHEM EICUT other 1
2 -1.2710835 autre autre EIHEM 2
3 -1.7094339 other other EIHEM 3
4  1.4926046 other other other 4
5 -0.7926824 EIHEM other other 5


Pour toutes les colonnes contenant "typ" en en-tête,faire la somme :

Code : Tout sélectionner

sum(df[, grep("typ", colnames(df))] == "EIHEM")
 4
sum(df[, grep("typ", colnames(df))] == "EICUT")
 1


En espérant t'avoir aidé !

Charles Marcucci
Messages : 52
Enregistré le : 13 Juil 2016, 09:00

Re: Fonction table sur 3-4 colonne

Messagepar Charles Marcucci » 07 Juil 2017, 15:19

Merci je connais pas la fonction grep

J'ai essayer mais ça ne fonctionne pas

Code : Tout sélectionner

sum(Ipilimumab[, grep("Type.EI_", colnames(Ipilimumab))] == "EICUT")


une idée de pourquoi ?

[edit] j'ai trouver le pourquoi j'ai des NA donc avec

Code : Tout sélectionner

 sum(Ipilimumab[, grep("Type.EI_", colnames(Ipilimumab))] == "EICUT", na.rm=TRUE)
ça marche mieux

merci beaucoup

Gabriel Terraz
Messages : 591
Enregistré le : 26 Sep 2011, 15:11

Re: Fonction table sur 3-4 colonne

Messagepar Gabriel Terraz » 07 Juil 2017, 15:25

Aucune idée, mais sans message d'erreur ni données, cela me parait impossible.

Par contre j'ai utilisé grep dans le cas où les colonnes d'intérêt ne sont pas à la suite ou un peu "n'importe où".

Tu peux tout à fait indexer avec des chiffres, si ce sont les 5 premières colonnes par exemple :

Code : Tout sélectionner

sum(Ipilimumab[, 1:5] == "EICUT")


Edit : impec tu as pensé à l'argument, j'avais oublié de le mentionner

Charles Marcucci
Messages : 52
Enregistré le : 13 Juil 2016, 09:00

Re: Fonction table sur 3-4 colonne

Messagepar Charles Marcucci » 07 Juil 2017, 15:31

Parfait en tout cas merci beaucoup

Le seul regret de la technique c'est que je doit rentre les EI à la main . La ça va j'en est que 8 mais pour le nom des EI j'en est 85 donc je ferai ma technique mais merci beaucoup

Gabriel Terraz
Messages : 591
Enregistré le : 26 Sep 2011, 15:11

Re: Fonction table sur 3-4 colonne

Messagepar Gabriel Terraz » 07 Juil 2017, 15:36

Ok, hésite pas si tu veux de l'aide.
Par exemple tu peux le faire directement pour toutes les valeurs possibles :

Code : Tout sélectionner

table(unlist(df[,2:3]))
autre EICUT EIHEM other
    3     5     1     1

Amuse toi bien !

Charles Marcucci
Messages : 52
Enregistré le : 13 Juil 2016, 09:00

Re: Fonction table sur 3-4 colonne

Messagepar Charles Marcucci » 14 Juil 2017, 09:31

Merci beaucoup en tout cas


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité