décomposition d'une ligne en plusieurs 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

décomposition d'une ligne en plusieurs ligne

Messagepar alexandre cavasino » 05 Juil 2017, 09:05

Bonjour, Etant actuellement dans l'embarras, je vous sollicite sur une difficulté à laquelle je fais face
Je dispose d'un jeu de donnée data qui est de la forme suivante :

Code : Tout sélectionner

nom   annee_fab     1     2    3    4
B21  1994           10    21  13   15
B33  1994           12    28  14   19


Interpretation : Le produit B21 fabriqué en 1994 coutait le premier mois, 10 franc et le mois 4 il en coute 15
Je souhaiterai décomposer pour un même nom(= produit) en plusieurs lignes le prix de ce dernier. par exemple faire une ligne en dessous avec une augmentation de 10 % du produit et obtenir ceci

Code : Tout sélectionner

nom     annee_fab         1     2      3      4
B21        1994           10    21    13     15
B21_evol   1994           11    23.1 14.3   16.5
B33        1994           12    28    14    19
B33_evol   1994          13.2   30.8  15.4  20.9


J'ai rajouté deux lignes B21_evol et B33_evol qui représentent les prix au dessus avec une évolution de 10 %
je voudrai faire aussi des diminution et d'autres ligne encore par produit. En obtenant déjà le code pour le tableau ci dessus je pourrais l'adapter par la suite.
Concerètement je souhaiterai savoir comment faire pour rajouter des lignes en dessous de chacun des produits.

Merci d'avance pour votre aide et le temps que vous consacré :)

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Re: décomposition d'une ligne en plusieurs ligne

Messagepar Logez Maxime » 05 Juil 2017, 13:55

Je dispose d'un jeu de donnée data qui est de la forme suivante :
Heu bonjour non ? Il ne me semble pas qu'on soit à ta disposition. S'il y a bien un truc d'agréable sur ce forum c'est la courtoisie entre les membres alors essayons de maintenir les bonnes pratiques.

Tu crées un 2ème tableau qui soit identique au premier. Tu fais les modifications sur le deuxième tableau. Tu les lies par ligne et tu le tri par rapport à la colonne nom.

Cordialement,
Maxime

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

Re: décomposition d'une ligne en plusieurs ligne

Messagepar alexandre cavasino » 05 Juil 2017, 14:20

Bonjour maxime,

Premièrement, je tenais à te remercier pour le temps que tu consacres à ma requête.
Veuillez accepter mes excuses pour cet oubli des bonnes manières.
Je reste néanmoins perplexe pour les modification à faire sur le tableau. Qu'entendez vous par lier.
Je m'étais dit de rajouter n lignes en dessous de chaque contrats seulement je n'ai pas la moindre idée de comment cela se programme sur R.

Dans l'attente d'une réponse, je vous souhaite une excellente fin de journée et vous remercie une nouvelle fois pour votre aide.

Bien cordialement,
Alexandre

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

Re: décomposition d'une ligne en plusieurs ligne

Messagepar alexandre cavasino » 06 Juil 2017, 08:36

Bonjour,

Je réexplique mon problème au cas ou je n'ai pas été assez précis.
Je souhaiterai qu'en dessous de chacun de mes produits (caractérisés par un code produit, j'obtienne une ligne vide ou je peux travailler dessus.

Code : Tout sélectionner

  nom   annee_fab     1     2    3    4
1 B21  1994           10    21  13   15
2 B33  1994           12    28  14   19
3 B47  1996           05    21  13   11


La table que je souhaiterai obtenir est :

Code : Tout sélectionner

  nom   annee_fab     1     2    3    4
1 B21    1994         10    21  13   15
2
3 B33    1994         12    28  14   19
4
5 B47    1996         05    21  13   11
6


J'ai donc rajouter 1 ligne en dessous de chaque contrat sur lesquelles je peux maintenant travailler.
Merci d'avance pour votre aide

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

Re: décomposition d'une ligne en plusieurs ligne

Messagepar Gabriel Terraz » 06 Juil 2017, 09:10

Salut,

À mon avis, ajouter une ligne vide pour "travailler dessus" n'a pas beaucoup de sens (des chaînes de caractères vides, des NA ?), autant créer cette ligne avec les valeurs à attribuer, non ?

Si par travailler dessus tu entend dans un fichier ou un tableur, tu peux sauvegarder ton dataframe en sautant une ligne à chaque fois (argument "eol"):

Code : Tout sélectionner

write.table(sDf, file = "zob", eol = "\n\n", row.names = F, sep ="\t")

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

Re: décomposition d'une ligne en plusieurs ligne

Messagepar Pierre-Yves Berrard » 06 Juil 2017, 09:14

Bonjour,

Ça doit être possible en créant une copie du tableau initial avec certaines colonnes à vide, puis en le mettant sous l'autre et en triant le tout.

Mais j'ai l'impression que vous essayez de procéder comme dans un tableur d'une suite bureautique (insérer une ligne, copier une formule...).
Faire ça avec R ne semble pas être la meilleure approche (sous-entendu : il doit y avoir plus simple).

edit : d'accord avec Gabriel, donc
PY

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

Re: décomposition d'une ligne en plusieurs ligne

Messagepar alexandre cavasino » 06 Juil 2017, 09:41

Merci pour vos réponses respectives. J'ai pour consigne de faire cela sur le logiciel R bien que initialement ce dernier ne soit pas prévu pour faire du traitement de base de donnée.
Comme le montre mon tout premier exemple. J'aimerai directement sur R sans passer par excel et effectuer des transformations, Spliter par produit et en dessous de chacun des lignes (la ou j'ai mit les vides) effectuer des variations sur le prix en question

Code : Tout sélectionner

  nom   annee_fab     1     2    3    4
1 B21    1994         10    21  13   15
2 B21    1994
3 B33    1994         12    28  14   19
4 B33    1994
5 B47    1996         05    21  13   11
6 B47    1996 


ainsi chaque nouvelle ligne représenterait l'evolution (augmentation ou diminution) par rapport au premier prix.
Merci à vous de m'aider

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

Re: décomposition d'une ligne en plusieurs ligne

Messagepar Gabriel Terraz » 06 Juil 2017, 09:55

Je n'avais pas lu les premiers messages. Mais comme je le disais, cela ne sert à rien de créer des lignes vides, autant les remplir !

Maxime t'avais donné la stratégie, voici ce que cela peut donner :

Les données :

Code : Tout sélectionner

tab <- structure(list(nom = c("B21", "B33"), annee_fab = c(1994L, 1994L
), X1 = c(10L, 12L), X2 = c(21L, 28L), X3 = 13:14, X4 = c(15L,
19L)), .Names = c("nom", "annee_fab", "X1", "X2", "X3", "X4"), row.names = c(NA,
-2L), class = "data.frame")
 
tab
  nom annee_fab X1 X2 X3 X4
1 B21      1994 10 21 13 15
2 B33      1994 12 28 14 19


Nouveau tableau avec +10%

Code : Tout sélectionner

newtab <- data.frame(nom = paste0(tab$nom,"_evol"), annee_fab = tab$annee_fab, tab[,3:6] * 1.1)
newtab
       nom annee_fab   X1   X2   X3   X4
1 B21_evol      1994 11.0 23.1 14.3 16.5
2 B33_evol      1994 13.2 30.8 15.4 20.9


On asseble les deux :

Code : Tout sélectionner

bigdata <- rbind(tab,newtab)
bigdata
       nom annee_fab   X1   X2   X3   X4
1      B21      1994 10.0 21.0 13.0 15.0
2      B33      1994 12.0 28.0 14.0 19.0
3 B21_evol      1994 11.0 23.1 14.3 16.5
4 B33_evol      1994 13.2 30.8 15.4 20.9


On trie (attention la colonnes nom doit être de type caractère et non facteur !

Code : Tout sélectionner

bigdata[order(bigdata$nom),]
       nom annee_fab   X1   X2   X3   X4
1      B21      1994 10.0 21.0 13.0 15.0
3 B21_evol      1994 11.0 23.1 14.3 16.5
2      B33      1994 12.0 28.0 14.0 19.0
4 B33_evol      1994 13.2 30.8 15.4 20.9

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Re: décomposition d'une ligne en plusieurs ligne

Messagepar Logez Maxime » 06 Juil 2017, 13:27

+1
Cordialement,
Maxime


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Google [Bot] et 1 invité

cron