Référence à une colonne par une chaîne de caractères

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

magalie chichi
Messages : 3
Enregistré le : 19 Juil 2017, 09:32

Référence à une colonne par une chaîne de caractères

Messagepar magalie chichi » 19 Juil 2017, 10:27

Bonjour,
Je débute dans R (autodidacte je ne connais pas bien les termes techniques, désolée) et j'ai besoin de manipuler plusieurs variables d'une même table puis de créer une nouvelle table. Pour ce faire, je reproduit plusieurs fois les mêmes instructions ; c'est pourquoi je voudrais créer une boucle mais je n'y parviens pas. Voici ce que je fais :

Code : Tout sélectionner

indiquerRDBMT = eff_scol14_dev15[c("pubpri_N", "voie_N", "serie_N","UAIRNE", "RDBMT","eff")]
indiquerRDBMT$numerateur = indiquerRDBMT$RDBMT
indiquerRDBMT$denominateur = indiquerRDBMT$eff
indiquerRDBMT$valeur = indiquerRDBMT$numerateur*100/indiquerRDBMT$denominateur
indiquerRDBMT$id = "05"
indiquerRDBMT = indiquerRDBMT[,c("pubpri_N", "voie_N", "serie_N","UAIRNE", "numerateur","denominateur","valeur","id")]

indiquerPREBAC = eff_scol14_dev15[c("pubpri_N", "voie_N", "serie_N","UAIRNE", "PREBAC","eff")]
indiquerPREBAC$numerateur = indiquerPREBAC$PREBAC
indiquerPREBAC$denominateur = indiquerPREBAC$eff
indiquerPREBAC$valeur = indiquerPREBAC$numerateur*100/indiquerPREBAC$denominateur
indiquerPREBAC$id = "07"
indiquerPREBAC = indiquerPREBAC[,c("pubpri_N", "voie_N", "serie_N","UAIRNE", "numerateur","denominateur","valeur","id")]

indiquerCPGE = eff_scol14_dev15[c("pubpri_N", "voie_N", "serie_N","UAIRNE", "CPGE","eff")]
indiquerCPGE$numerateur = indiquerCPGE$CPGE
indiquerCPGE$denominateur = indiquerCPGE$eff
indiquerCPGE$valeur = indiquerCPGE$numerateur*100/indiquerCPGE$denominateur
indiquerCPGE$id = "02"
indiquerCPGE = indiquerCPGE[,c("pubpri_N", "voie_N", "serie_N","UAIRNE", "numerateur","denominateur","valeur","id")]

J'ai tenté quelque chose :

Code : Tout sélectionner

table = c( "STS","CPGE", "IUT", "UNIV", "RDBMT", "AUTRE_PBAC",  "PREBAC")
 for(i in 1:7) {
  nam = paste("indiquer", table[i], sep = "")
  indiquer = eff_scol14_dev15[c("pubpri_N", "voie_N", "serie_N","UAIRNE", table[i],"eff")]
  indiquer$numerateur = get(paste("indiquer$",table[i], sep=""))
  indiquer$denominateur = indiquer$eff
  indiquer$valeur = indiquer$numerateur*100/indiquer$denominateur
  indiquer$id = i
  indiquer = indiquer[,c("UAIRNE", "numerateur","denominateur","valeur","id")]
  assign(nam, indiquer)}

j'ai un message d'erreur indiquant que l'objet "indiquer$STS" (pour le premier passage de la boucle) n'existe pas ...
je sais que c'est

Code : Tout sélectionner

 indiquer$numerateur = get(paste("indiquer$",table[i], sep=""))

qui ne fonctionne pas mais du coup je ne sais pas du tout quoi faire.
____________________________________________________________________________________________________________

J'ai lu que c'est mieux d'utiliser apply plutôt que les boucles mais j'avoue que je ne sais pas non-plus comment faire.

Merci d'avance pour votre aide

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

Re: créer une boucle ou utiliser apply ?

Messagepar Gabriel Terraz » 19 Juil 2017, 10:37

Salut,
Peut-être que tu pourrais nous montrer à quoi ressemble tes données et ce que tu veux faire, cela serait beaucoup plus simple pour t'aider.

Pierre-Yves Berrard
Messages : 1029
Enregistré le : 12 Jan 2016, 23:30

Re: créer une boucle ou utiliser apply ?

Messagepar Pierre-Yves Berrard » 19 Juil 2017, 11:39

Bonjour,

D'accord avec Gabriel.
Comment insérer des données dans un message ?
Pour plus de lisibilité, place aussi tes instructions entre des balises

Code : Tout sélectionner

[code][/code]


J'ai quand même plus ou moins compris ce que tu cherchais à faire. Essaie dans un premier temps de remplacer la ligne en erreur par :

Code : Tout sélectionner

indiquer$numerateur <- indiquer[[table[i]]]

(car tableau$colonne est un raccourci pour tableau[["colonne"]])
PY

magalie chichi
Messages : 3
Enregistré le : 19 Juil 2017, 09:32

Re: créer une boucle ou utiliser apply ?

Messagepar magalie chichi » 20 Juil 2017, 12:01

Génial !!!
Merci beaucoup !!!

Code : Tout sélectionner

indiquer$numerateur <- indiquer[[table[i]]]


était LA solution.

Je ferai plus attention aux normes de présentation du problème à l'avenir... merci beaucoup.

magalie chichi
Messages : 3
Enregistré le : 19 Juil 2017, 09:32

Re: créer une boucle ou utiliser apply ?

Messagepar magalie chichi » 20 Juil 2017, 12:12

PS
Désolée pour mon temps de réponse, c'est la première fois que je pose une question dans le forum et je pensais recevoir une notification ... ;-)

Pierre-Yves Berrard
Messages : 1029
Enregistré le : 12 Jan 2016, 23:30

Re: créer une boucle ou utiliser apply ?

Messagepar Pierre-Yves Berrard » 20 Juil 2017, 12:25

Pas de souci. ;-)

Ceci dit, vous auriez normalement dû recevoir une notification.
Vérifiez dans votre panneau d'utilisateur la section "Modifier les préférences de notification".

PS : pour ne pas induire en erreur les personnes qui feraient une recherche ultérieurement, pourriez-vous renommer votre premier message "Référence à une colonne par une chaîne de caractères".
PY


Retourner vers « Questions en cours »

Qui est en ligne

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