grouper des lignes et déplacer des resultats
Bonjour à tou.te.s,
J'ai un dataset sur laquelle je travaille qui me pose actuellement quelques soucis.
Laissez-moi vous donner un exemple pour que vous cerniez ma requête. Je pars d'un fichier d'entrée pour pouvoir créer des variables. Considérons la table (22*7) suivante:
champ |
entite |
variable1 |
Variable2 |
Variable3 |
Variable4 |
Variable5 |
AAA102845367HGPM1256987403.1N |
AAA |
15 |
0 |
0 |
0 |
0 |
BAA102845356HGPM1256987403.1B |
BAA |
0 |
224 |
0 |
0 |
0 |
BBA102845346HGPM1256987403.1D |
BBA |
0 |
0 |
40 |
0 |
0 |
700102845355HGPM1256987403.1D |
700 |
0 |
0 |
0 |
-23 |
achat_double |
702102845358HGPM1256987403.1A |
702 |
0 |
0 |
0 |
0 |
0 |
705102845399HGPM1256987403.1A |
705 |
0 |
0 |
0 |
0 |
0 |
706102845332HGPM1256987403.1F |
706 |
0 |
0 |
0 |
0 |
0 |
799102845386HGPM1256987403.1G |
799 |
0 |
0 |
0 |
0 |
0 |
AAA102845314HGPM1256987403.1H |
AAA |
18 |
0 |
0 |
15 |
0 |
BAA102845336HGPM1256987403.1} |
BAA |
0 |
240 |
0 |
15 |
0 |
BBA102845311HGPM1256987403.1{ |
BBA |
0 |
0 |
3 |
15 |
0 |
700102845300HGPM1256987403.1K |
700 |
0 |
0 |
0 |
-470 |
0 |
706102845302HGPM1256987403.1J |
706 |
0 |
0 |
0 |
0 |
0 |
710102845303HGPM1256987403.1M |
710 |
0 |
0 |
0 |
0 |
0 |
799102845300HGPM1256987403.1N |
799 |
0 |
0 |
0 |
0 |
0 |
AAA102845317HGPM1256987403.1R |
AAA |
23 |
0 |
0 |
0 |
0 |
BBA102845317HGPM1256987403.1E |
BBA |
0 |
289 |
0 |
0 |
0 |
700102845317HGPM1256987403.1I |
700 |
0 |
0 |
19 |
180 |
0 |
702102845317HGPM1256987403.1H |
702 |
0 |
0 |
0 |
0 |
0 |
799102845317HGPM1256987403.1M |
799 |
0 |
0 |
0 |
0 |
0 |
999102845317HGPM1256987403.1M |
999 |
0 |
0 |
0 |
0 |
0 |
-- // -- (ainsi de suite) |
|
|
|
|
|
|
******
NB: comment lire ce fichier : voir des achats effectués par des individus qui commencent à une date t (donnée en quantième, variable1 à partir de l'entité AAA) et se termine lorsqu'il y a l'entité 999 (cellule B22). Entre ces extremités, on peut réaliser plusieurs achats. De même, entre 700 et 799 ce sont les achats d'un même individu. on peut dire qu'ici, on regarde les achats de différents produits par trois individus.
******
je dispose des données (colonne "champ", cellule A1) de cette nature et dois en faire des variables. Pour quelques variables l'approche ligne par ligne (nécessitant un simple ifelse) tiens pour d'autres elle ne tient pas (car il faut impliquer la ligne supérieure ou la ligne inférieure). C'est le cas de la variable5 qui nécessite pour être déterminer de faire la condition par rapport aux entités 702 & 705 (ie leur présence). Etant à ce jour incapable de le réaliser sous R, je me remets à vos vous pour m'orienter (sous excel c'est facile mais périlleux). Voici mes deux questions :
- est -il possible de grouper dès le départ les lignes de sa dataset sur R (quitte à créer une colonne spéciale comportant leurs modalités afférentes aux groupes g1 ... gn)? Par exemple pour pouvoir dire (cas de l'individu 1) en G5, si B6="702" et B7="705", alors G5="achat_double" et 0 sinon.
- est-il possible une fois les groupes constitués de déplacer les résultats d'une cellule vers une autre, ie de les porter sur une autre cellule du même groupe? exemple
considérons que
AAA102845314HGPM1256987403.1H |
AAA |
18 |
0 |
0 |
15 |
0 |
BAA102845336HGPM1256987403.1} |
BAA |
0 |
240 |
0 |
15 |
0 |
BBA102845311HGPM1256987403.1{ |
BBA |
0 |
0 |
3 |
15 |
0 |
700102845300HGPM1256987403.1K |
700 |
0 |
0 |
0 |
-470 |
achat_double |
706102845302HGPM1256987403.1J |
706 |
0 |
0 |
0 |
0 |
0 |
710102845303HGPM1256987403.1M |
710 |
0 |
0 |
0 |
0 |
0 |
799102845300HGPM1256987403.1N |
799 |
0 |
0 |
0 |
0 |
0 |
deviennent (avec un regroupement autour de l'entité 700 pour chaque individu)
AAA102845314HGPM1256987403.1H |
AAA |
0 |
0 |
0 |
0 |
0 |
BAA102845336HGPM1256987403.1} |
BAA |
0 |
0 |
0 |
0 |
0 |
700102845300HGPM1256987403.1K |
700 |
18 |
240 |
3 |
-470 |
achat double |
---- ligne vide remplaçant 702 --- |
|
|
|
|
|
|
---- ligne vide remplaçant 705 --- |
|
|
|
|
|
|
706102845302HGPM1256987403.1J |
706 |
0 |
0 |
0 |
0 |
0 |
710102845303HGPM1256987403.1M |
710 |
0 |
0 |
0 |
0 |
0 |
799102845300HGPM1256987403.1N |
799 |
0 |
0 |
0 |
0 |
0 |
et la même démarche pour la suite.
j'ai procédé à quelques recherches; toutes infructueuses pour le moment.
Merci pour votre(vos) réponse(s) par avance ou idée(s).