convertir en numérique une variable (en ligne)

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

alexandre cavasino
Messages : 34
Enregistré le : 13 Juin 2017, 08:14

convertir en numérique une variable (en ligne)

Messagepar alexandre cavasino » 18 Juil 2017, 10:05

Bonjour à tous,
je dispose d'une base de donnée table avec plusieurs variables

Code : Tout sélectionner

id  nb    code     val
01  1      A        10
02  2      B        14
02  3      C        11
03  4      D        13


je souhaiterai faire des calculs sur cette table pour cela j'ai besoin de convertir la variable val en numérique (car pas fait de base)
ici si je fait table$val = as.numeric(as.character(table$val)) cela fonctionne tres bien pour les calculs après que j'ai à faire sur cette dernière
Seulement je souhaite travailler en ligne j'ai ainsi transposé ma table qui s'appelle désormais tabletranspose et j'obtiens :

Code : Tout sélectionner

    X1  X2  X3  X4               
id  01  02  03  04
nb   1   2   3   4
code A   B   C   D
val 10  14  11  13 


je souhaiterais faire la même commande que ce qui est en gras au dessus seulement pour cette fois la ligne 4 (variable val)
J'ai opté pour cette commande seulement elle ne fonctionne pas.....
tabletranspose[4,] = as.numeric(as.character(tabletranspose[4,]))
l'objectif que est que le calcul suivant : tabletranspose[4,1] %% tabletranspose[4,2] me retourne 14
cela équivaut (10 mod 14) seulement j'obtiens %% not meaningul for factors

Merci d'avance pour votre aide.

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

Re: convertir en numérique une variable (en ligne)

Messagepar Pierre-Yves Berrard » 18 Juil 2017, 10:29

Bonjour,

Transposer les données pour travailler en ligne n'est pas judicieux.

En effet, un data.frame impose que les données soient homogènes dans une colonne donnée. Par exemple pour X1, comme il y a un "A" qui se balade en 4e ligne, val sera systématiquement converti en "10" (chaîne de caractère) lors de la transposition.

Ces explications devraient aussi vous éclairer pour l'autre sujet que vous avez ouvert.
PY

alexandre cavasino
Messages : 34
Enregistré le : 13 Juin 2017, 08:14

Re: convertir en numérique une variable (en ligne)

Messagepar alexandre cavasino » 18 Juil 2017, 12:11

merci pour votre réponse. Dans l'hypothèse ou je décide de travailler en colonne. existe t'il un moyen de spliter en 2 lignes un même identifiants. Si ma table est la suivante :

Code : Tout sélectionner

id  nb    code     val
01  1      A        10
02  2      B        14


je souhaiterais obtenir la table suivante :

Code : Tout sélectionner

id        nb    code     val
01_av     1      A        10
01_ap     1      A        10
02_av     2      B        14
02_ap     2      B        14


en gros j'aimerais avoir deux lignes pour chaque identifiants avec les mêmes informations pour chaque variable.
Merci d'avance pour votre aide.

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

Re: convertir en numérique une variable (en ligne)

Messagepar Pierre-Yves Berrard » 18 Juil 2017, 12:15

alexandre cavasino a écrit :existe t'il un moyen de spliter en 2 lignes un même identifiants.

Oui. S'inspirer de ce qui a été proposé ici.
PY

alexandre cavasino
Messages : 34
Enregistré le : 13 Juin 2017, 08:14

Re: convertir en numérique une variable (en ligne)

Messagepar alexandre cavasino » 18 Juil 2017, 12:33

merci beaucoup.
En suivant ces conseils j'ai fait :
newtable <- table[rep(1:nrow(table), each =2),]

ainsi j'obtiens la table suivante :

Code : Tout sélectionner

id     nb    code     val
01     1      A        10
01     1      A        10
02     2      B        14
02     2      B        14


seulement maintenant comment faire en sorte que j'obtienne pour chaque identifiant _Av et _Ap pour différencier le cas avant d'après.
lorsque je fais names(newtable$id) <- paste(rep(names(table$id), each = 2), c("_Av", "_Ap")), cela ne fonctionne pas

je souhaite obtenir ceci :

Code : Tout sélectionner

id           nb    code     val
01_Av        1      A        10
01_Ap        1      A        10
02_Av        2      B        14
02_Ap        2      B        14


merci à vous pour votre aide.
A C

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

Re: convertir en numérique une variable (en ligne)

Messagepar Pierre-Yves Berrard » 18 Juil 2017, 12:42

alexandre cavasino a écrit :names(newtable$id) <- paste(rep(names(table$id), each = 2), c("_Av", "_Ap")), cela ne fonctionne pas

Attention names fait référence au nom des colonnes. (j'insiste : un data.frame est défini par colonne)

En enlevant les names, ça devrait passer :

Code : Tout sélectionner

newtable$id <- paste0(rep(table$id, each = 2), c("_Av", "_Ap"))
PY

Serge Rapenne
Messages : 1426
Enregistré le : 20 Aoû 2007, 15:17
Contact :

Re: convertir en numérique une variable (en ligne)

Messagepar Serge Rapenne » 18 Juil 2017, 13:03

Bonjour,

avec le recyclage des vecteurs il est possible de simplifier en

Code : Tout sélectionner

newtable$id <- paste0(table$id, c("_Av", "_Ap"))


Serge


Retourner vers « Questions en cours »

Qui est en ligne

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