France Hardware : Forums de discussion - Découvrez notre nouveau comparateur d'offres Internet
Retrouvez les prix près de chez vous :  
Index du forum | Liste des membres | Liste des groupes | Inscription | F-A-Q | Recherche
Pseudo :    Password :     
29 511 membres enregistrés - 2 069 318 posts - 122 026 topics
Index des forums FH  | Index des forums DegroupNews
      Programmation
           Langages
                besoin d'aide,urgent : langage R
66 connectés(record : 2799 le 29 May 2016 - 15 h 34)

Vous devez vous connecter pour répondre au topic.
besoin d'aide,urgent : langage R

marseillaise


Messages : 4
Inscrit le 21/04/08
Ville : marseille
Non connecté
  Posté le 21 April 2008 - 19 h 39 m 48 s
bonjour, je suis étudiante et j'ai un projet en informatique (dans le langage R) à rendre :

Transformation de données

On dispose de données dans le format « une observation par sujet », (tableau:)
Sujet PHl PH2 PH3
1 7.01 6.9 6.8
2 6.9 6.7 6.6
Ces données représentent par exemple les mesures d’un paramètre biologique à 3 instants
différents chez différents individus. On voudrait transformer ces données dans le format :
« plusieurs observations par sujet »: (tableau:)
Sujet temps PH
1 1 7.01
1 2 6.9
1 3 6.8
2 1 6.9
2 2 6.7
2 3 6.6
Ecrire les scripts réalisant cette transformation et sa réciproque, et calculant dans les deux
formats les résumés statistiques du paramètre mesuré pour chaque instant.
Donnez les scripts réalisant la transformation suivante
Format initial :
Sujet PHl PH2 PH3 PCRl PCR2 PCR3
1 7.01 6.9 6.8 100 120 25
2 6.9 6.7 6.6 96 115 78
Format final
Sujet Temps PH PCR
1 1 7.01 100
1 2 6.9 120
1 3 6.8 25
2 1 6.9 96
2 2 6.7 115
2 3 6.6 78

voila donc l'énoncé, j'ai réussi par "bricollage" à le faire mais il faut que je trouve un programme qui soit général (qui pourrait etre utilisé pour un beaucoup plus grand nombre de données) et je n'y parviens pas...
merci par avance pour votre aide a tous




Woofy
Totalement inutile, complètement indispensable

Messages : 31 539
Inscrit le 11/01/02
Ville : Lyon
Non connecté
  Posté le 22 April 2008 - 08 h 47 m 54 s
Bonjour, serait-il possible de voir ce que vous avez fait ?
Je ne connais pas le langage R, mais je veux bien jeter un coup d'oeil.




marseillaise


Messages : 4
Inscrit le 21/04/08
Ville : marseille
Non connecté
  Posté le 22 April 2008 - 11 h 00 m 49 s
merci beaucoup c'est très gentil !
c'est un peu du "bricollage" mais au final on arrive au résultat mais spécifique à l'exercice et impossible à généraliser à partir de ce programme ...
IMPORTATION DU TABLEAU


> N1=read.table("MAO1.txt");N1
V1 V2 V3 V4 V5 V6 V7
1 sujet PH1 PH2 PH3 PCR1 PCR2 PCR3
2 1 7.01 6.9 6.8 100 120 25
3 2 6.9 6.7 6.6 96 115 78



POUR LA COLONNE PH

> PHc=rbind(M1b[,2],M1b[,3],M1b[,4]);PHc
[,1] [,2]
[1,] 7.01 6.9
[2,] 6.90 6.7
[3,] 6.80 6.6

> dim(PH)=c(1,6);PH
[,1]
[1,] 7.01
[2,] 6.90
[3,] 6.80
[4,] 6.90
[5,] 6.70
[6,] 6.60



POUR LA COLONNE PCR

> PCRc=rbind(M1b[,5],M1b[,6],M1b[,7]);PCRc
[,1] [,2]
[1,] 100 96
[2,] 120 115
[3,] 25 78

> dim(PCR)=c(1,6);PCR
[,1]
[1,] 100
[2,] 120
[3,] 25
[4,] 96
[5,] 115
[6,] 78



POUR LA COLONNE TEMPS

> temps=cut(PHc[,1],breaks=c(6.5,6.85,7,8),labels=FALSE);temps
[1] 3 2 1
> temps=cut(PHc[,2],breaks=c(6.5,6.65,6.75,6.95),labels=FALSE);temps
[1] 3 2 1

> Tps=apply(T,2,sort)
UN DEU
[1,] 1 1
[2,] 2 2
[3,] 3 3

> dim(Tps)=c(6,1);Tps
[,1]
[1,] 1
[2,] 2
[3,] 3
[4,] 1
[5,] 2
[6,] 3



POUR LA COLONNE SUJET

> suj1=cbind(PHc[,1],1);suj1
[,1] [,2]
[1,] 7.01 1
[2,] 6.90 1
[3,] 6.80 1

> suj2=cbind(PHc[,2],2);suj2
[,1] [,2]
[1,] 6.9 2
[2,] 6.7 2
[3,] 6.6 2

> suj3=cbind(suj1,suj2);suj3
[,1] [,2] [,3] [,4]
[1,] 7.01 1 6.9 2
[2,] 6.90 1 6.7 2
[3,] 6.80 1 6.6 2

> suj3=cbind(suj1,suj2)[,c(2,4,1,3)];suj3
[,1] [,2] [,3] [,4]
[1,] 1 2 7.01 6.9
[2,] 1 2 6.90 6.7
[3,] 1 2 6.80 6.6

> dim(suj3)=c(6,2);suj3
[,1] [,2]
[1,] 1 7.01
[2,] 1 6.90
[3,] 1 6.80
[4,] 2 6.90
[5,] 2 6.70
[6,] 2 6.60



FINALLL

> NEW=cbind(suj3,Tps,PCR)[,c(1,3,2,4)];NEW
[,1] [,2] [,3] [,4]
[1,] 1 1 7.01 100
[2,] 1 2 6.90 120
[3,] 1 3 6.80 25
[4,] 2 1 6.90 96
[5,] 2 2 6.70 115
[6,] 2 3 6.60 78

> colnames(NEW)=c("sujet","temps","PH","PCR");NEW
sujet temps PH PCR
[1,] 1 1 7.01 100
[2,] 1 2 6.90 120
[3,] 1 3 6.80 25
[4,] 2 1 6.90 96
[5,] 2 2 6.70 115
[6,] 2 3 6.60 78

je pense que pour qu'on puisse l'appliquer à un grand nombre de données il faut utiliser les fonctions apply() et replicate() mais je sais pas trop comment m'y prendre ...
encore merci de t'y intéresser :)




Woofy
Totalement inutile, complètement indispensable

Messages : 31 539
Inscrit le 11/01/02
Ville : Lyon
Non connecté
  Posté le 22 April 2008 - 12 h 00 m 40 s
En fait, ce que tu fais toi à la main lorsque le nombre de colonnes augmente, il faut que tu l'automatise.
Je ne pourrais pas t'aider sur le langage, mais au niveau de l'algo :

Analyser la première ligne, tu trouve toujours "Sujet", et ensuite des colonnes contenant PHx ... PCRx ... en fait, il faudrait que tu regarde sur les colonnes les premiers caractères en commun. Par exemple, si tu trouve PH1, tu t'attend à trouver PH2, puis PH3, puis PH4, ... si tu ne trouve pas PH4 mais PCR1, alors tu as une nouvelle colonne, et donc tu t'attend à trouver PCR2, ... Tu identifie même la valeur (ici 3) de temps maximale.
Lorsque tu trouve une nouvelle colonne, tu identifie son nom que tu stocke dans un tableau (comme pour tes valeurs), et la valeur max de temps.

Il te suffira de parcourir ces tableaux après.


Hum ... je suis pas très clair je sais :/
Sinon là tu nous donne ton programme et ce qu'il nous retourne à l'écran. Tu tape comme ça tout à la main (les commandes du programme) ? Enfin tout en ligne de commande ? Ou tu as un fichier avec les instructions les unes à la suite des autres ?
Parcque tu devra utiliser la récursivité (en gros, aller dans une fonction plusieurs fois, avec des paramètres différents, jusqu'a ce que tu ai tout fait).

On en est arrivé donc à déterminer le nombre de colonnes, ce qui te faisait défaut. A partir d




marseillaise


Messages : 4
Inscrit le 21/04/08
Ville : marseille
Non connecté
  Posté le 22 April 2008 - 15 h 25 m 02 s
d'accord je crois que j'ai compris le schéma à suivre, je vais essayer de le faire entre 2 révisions de partiels...
Oui je tape toutes mes instructions à la main et le programme me renvoie les tableaux. Si ca tinteresse le langage R je l'ai téléchargé sur internet ;)
en tt cas merci beaucoup, jespere y arriver maintenant....




Woofy
Totalement inutile, complètement indispensable

Messages : 31 539
Inscrit le 11/01/02
Ville : Lyon
Non connecté
  Posté le 22 April 2008 - 15 h 32 m 55 s
Oui, j'étais en train de lire le manuel, mais bon je n'ai pas le temps d'apprendre le truc pour t'aider tout de suite.
Je verrais ça de plus prêt !




marseillaise


Messages : 4
Inscrit le 21/04/08
Ville : marseille
Non connecté
  Posté le 22 April 2008 - 20 h 48 m 29 s
juste au cas ou: c'est pour la semaine prochaine ;)




Page genérée en 1.9022 secondes par RahForum 2.0 | Gzip off |  Stats |  Metaforums |  RSS
© 2004 Cerbere Systems.
Prix Matériel Informatique | Informatique Lyon | Informatique Grenoble | Informatique Annecy | Informatique Marseille | Informatique Bordeaux | Forum Informatique
ADSL | Actualité ADSL | Deligo | Appareil photo | Commande Au Volant
Creative Commons
Message Boards and Forums Directory