Bonjour,
Y aurait - il un moyen me permettant dans une boucle for de ne sélectionner que mes variables de format numérique ?
Autrement, je devrais les écrire manuellement par moi - même.
Bonjour,
Y aurait - il un moyen me permettant dans une boucle for de ne sélectionner que mes variables de format numérique ?
Autrement, je devrais les écrire manuellement par moi - même.
Edit : J'ai finalement réussi à isoler mes colonnes.
Mon deuxième soucis étant à présent que j'aurais besoin de créer une boucle qui me permettrais d'appliquer un certain nombre de fois une fonction sur mes variables numériques. Mais mes valeurs sont aberrantes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part varnum <- sapply(df, is.numeric)
Code : Sélectionner tout - Visualiser dans une fenêtre à part test <- data.frame(apply(df[varnum], 2 ,mean))
Bonjour,
Qu'entendez-vous par "mes valeurs sont aberrantes" ?
Pouvez-vous nous montrer à quoi ressemble votre sortie ? Et ce à quoi vous vous attendriez ?
Cordialement,
A.D.
Forum R
Fournir le code utilisé (pensez aux balises code !), les packages nécessaires, ainsi qu'un court mais représentatif extrait du jeu de données et les éventuels messages d'erreur.
Recherche d'informations concernant R : RSiteSearch / tutoriels : http://r.developpez.com/cours/ .
Pensez également au bouton "Résolu" et à voter (en bas à droite des messages) lorsque vous avez obtenu une réponse satisfaisante.
Bonjour,
En recopiant manuellement chacune de mes colonnes numériques, le code ressemble à :
Et le résultat est le suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part test <- data.frame(apply(df[,c("var1", "var2", "var3", "..." , "var149", "var150")], 2 ,mean))
Alors que quand je le fais automatiquement :
J'obtiens ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 varnum <- sapply(df, is.numeric) test <- data.frame(apply(df[varnum], 2 ,mean))
Re-bonjour,
Je ne sais pas si c'est une faute de frappe lors de l'écriture de votre message mais il me semble qu'il manque une virgule pour la sélection des colonnes du dataframe :
Il faudrait plutôt :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 varnum <- sapply(df, is.numeric) test <- data.frame(apply(df[,varnum], 2 ,mean))
Cordialement,
A.D.
Forum R
Fournir le code utilisé (pensez aux balises code !), les packages nécessaires, ainsi qu'un court mais représentatif extrait du jeu de données et les éventuels messages d'erreur.
Recherche d'informations concernant R : RSiteSearch / tutoriels : http://r.developpez.com/cours/ .
Pensez également au bouton "Résolu" et à voter (en bas à droite des messages) lorsque vous avez obtenu une réponse satisfaisante.
df[,varnum] et df[varnum] renvoient exactement les mêmes valeurs. Les deux sélections sont identiques.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 > a <- df[,varnum] == df[varnum] > table(unique(a)) TRUE 146
Il est préférable de ne pas mettre de virgule quand on veut extraire des colonnes.
En effet la notation DF[i] renverra toujours une dataframe tandis que DF[,i] renverra un vecteur si une seule colonne est sélectionnée et une dataframe si plusieurs colonnes sont sélectionnées, ce qui pose souvent problème quand la longueur de i est inconnue.
Cela est bon à savoir en tout cas, j'en prend note.
Du coup, cette subtilité n'est pas lié à la différence de résultat obtenue. Savez vous quelle est t-elle ?
Il y a une erreur, soit dans le vecteur que tu rentres à la main, soit qu'une colonne que tu ne veux pas est sélectionnée par varnum, dans les deux cas ça dépend de tes données, qu'on n'a pas, donc on ne peut pas t'aider.
Sinon plutôt que d'utiliser apply et mean, tu peux utiliser rowMeans pour simplifier (mais ça changera rien à ton problème).
Mes variables étant binaires pour la plupart, j'imagine qu'il y a un soucis dans mon varnum. Mais assez complexe apparemment.
Je ne parviens pas à voir la différence entre les deux jeux de données.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 a <- df[,c("var1", "var2", ..., "var145")] b <- df[varnum] b <- b[,-1] #suppression de la variable X en trop b <- b[,c("var1", "var2", ..., "var145")] #mise en forme tel que les colonnes soient dans un ordre identique dans a comme dans b. c <- a == b table(unique(c))] TRUE 145
J'avais déjà essayé la fonction colMeans mais elle retourne les mêmes résultats, oui.
Hello,
Les deux tableaux que tu renvois sont les même si tu enlèves les 8 premières lignes du deuxieme tableau.
Si tu as une colonne en trop dans b, elle est supprimée à la ligne 5 de ton code, donc normal que tu ne vois pas de différence.
Bonjour,
Sengar, je ne comprend absolument pas ce que tu essayes de me dire :-/
Theta, mes moyennes étant calculées colonnes par colonnes, je ne vois pas où peut être le soucis par rapport à ça.
La 4ème ligne est pour le coup superflu mais le fait de modifier l'ordre de mes colonnes ne devrait pas avoir d'incidence sur les résultats de la sortie obtenue. J'essayais juste de mettre en évidence le fait que les deux jeux de données sont identiques.
Regarde attentivement les deux tableaux ci dessous.
Ils renvoient les même valeurs si tu enlèves 8 premières lignes du deuxieme tableau.
Dans ton code où tu rentres les noms de variables manuellement, tu as du oublier les 8 premieres variables c'est tout.
En gros, il n'y a pas de valeur aberrantes, tu n'es juste pas sur le même nombre de variables.
En recopiant manuellement chacune de mes colonnes numériques, le code ressemble à :
Et le résultat est le suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part test <- data.frame(apply(df[,c("var1", "var2", "var3", "..." , "var149", "var150")], 2 ,mean))
Alors que quand je le fais automatiquement :
J'obtiens ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 varnum <- sapply(df, is.numeric) test <- data.frame(apply(df[varnum], 2 ,mean))
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager