Création d'une nouvelle variable à partir des variables existantes

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

Lylia MULEKO
Messages : 1
Enregistré le : 21 Nov 2022, 09:10

Création d'une nouvelle variable à partir des variables existantes

Messagepar Lylia MULEKO » 25 Nov 2022, 14:49

Bonjour,
je suis nouvelle dans ce forum et débutante sur R, la question que je m’apprête a poser l'a surement déjà été. je n'ai pas trouvé de réponse sur le forum et donc je me permets de la poser .
j'aimerais svp avoir de l'aide pour manipuler ma dataframe.
J'aimerais pouvoir calculer une nouvelle variable: "Nb_cig_jr = pour Nombre de cigarette fumé par jour" à partir de deux premières: nb_cig la variable nombre de cigarette et la variable Freq_cig pour frequence de cigarette.
Nb_cig Freq_cig
120 Par an
20 Par mois
19 Par semaine
90 Par an
5 Par jour
12 Par mois
9 Par jour

La variable Freq_cig étant qualitative et donnée en differentes unités, j'aimerais savoir comment la transformer de telle sorte que toutes les lignes soient en jour et comment faire pour pouvoir calculer ma variable Nb_cig_jr

J'ai essayé de tourner le truc dans tout le sens, impossible de trouver,

Merci d'avance pour votre aide

lylia

Facundo Muñoz
Messages : 156
Enregistré le : 04 Juil 2019, 09:58
Contact :

Re: Création d'une nouvelle variable à partir des variables existantes

Messagepar Facundo Muñoz » 25 Nov 2022, 15:23

Bonjour Lylia,

Voici une possible solution, en suppossant que toutes les catégories dans "freq_days" sont exprimées systématiquement de la même manière.

Code : Tout sélectionner

dat <- data.frame(
  Nb_cig = c(120, 20, 19, 90, 5, 12, 9),
  Freq_cig = paste(
    "Par", c("an", "mois", "semaine", "an", "jour", "mois", "jour")
  )
)

## Numerical values in days of frequency categories
freq_days = c(
  "Par an"      = 365,
  "Par mois"    = 30,
  "Par semaine" = 7,
  "Par jour"    = 1
)

dat$Nb_cig_jr <- dat$Nb_cig / unname(freq_days[dat$Freq_cig])

dat
#>   Nb_cig    Freq_cig Nb_cig_jr
#> 1    120      Par an 0.3287671
#> 2     20    Par mois 0.6666667
#> 3     19 Par semaine 2.7142857
#> 4     90      Par an 0.2465753
#> 5      5    Par jour 5.0000000
#> 6     12    Par mois 0.4000000
#> 7      9    Par jour 9.0000000


Pour la prochaine fois, veuillez fournir un exemple reproductible en code (c.f. viewtopic.php?f=1&t=7638) pour faciliter vous faire aider. Vous avez bien donné un jeu de données d'exemple, mais j'ai mis plus de temps à le transformer en data.frame qu'à écrire la solution. Merci.

Cordialement,
ƒacu.-


Retourner vers « Questions en cours »

Qui est en ligne

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