Un début ?

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

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

Re: Un début ?

Messagepar Pierre-Yves Berrard » 21 Fév 2017, 19:36

Je n'arrive pas à attraper les données de 2eme colonne du tableau avec read.delim2(file, ....)

Vous avez attrapé toutes les données dans "don". Pour une colonne particulière, utiliser l'opérateur "$" :

Code : Tout sélectionner

don$Moyenne.Generale

Si vous voulez aller plus loin, il ne serait peut-être pas inutile de voir ou revoir quelques notions basiques de R, comme les différents types de données (vecteurs, listes, data.frame...) et comment les manipuler.
PY

Luc Giraud
Messages : 15
Enregistré le : 20 Fév 2017, 09:46

Re: Un début ?

Messagepar Luc Giraud » 21 Fév 2017, 19:45

Effectivement ! Les bases me font défaut ...

Code : Tout sélectionner

 don1 <- read.delim2("/Users/macbookoiselet/Dropbox/0.00_Annee_2016-2017/0.TS5/Notes-BBlanc-TS-21-fev.csv",, header = TRUE, sep = ",", quote = "\"",
                     dec = ",", fill = TRUE, comment.char = "")
 don1
 Notes_finies=c(don$`Moyenne Generale`)
 summary(Notes_finies)
 statut=c("Echec","Oral","Admis","Assez Bien","Bien","Très Bien","Félicitations du Jury")
 
 E=0
 O=0
 A=0
 AB=0
 B=0
 TB=0
 F=0
 N=length(Notes_finies)
 
 for(n in 1:N) {
   ifelse(Notes_finies[n]<8,E<-E+1,E<-E)
   ifelse(Notes_finies[n]<10,O<-O+1,O<-O)
   ifelse(Notes_finies[n]<12,A<-A+1,A<-A)
   ifelse(Notes_finies[n]<14,AB<-AB+1,AB<-AB)
   ifelse(Notes_finies[n]<16,B<-B+1,B<-B)
   ifelse(Notes_finies[n]<18,TB<-TB+1,TB<-TB)
   ifelse(Notes_finies[n]<=20,F<-F+1,F<-F)
 }
 
 fre=c(E,O-E,A-O,AB-A,B-AB,TB-B,F-TB)/(N-2)
 names(Notes_finales)<-statut
 notes<-c(4,9,11,13,15,20)
pie(notes,fre,col=coul,main="Bac Blanc TS 2017")


Merci pour le coup de main .

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

Re: Un début ?

Messagepar Pierre-Yves Berrard » 21 Fév 2017, 22:35

Y a plus simple pour le comptage :

Code : Tout sélectionner

don$statut <- cut(
  don$Moyenne.Generale,
  breaks = c(0, 8, 10, 12, 14, 16, 18, 20),
  labels = c("Échec", "Oral", "Admis", "Assez Bien", "Bien", "Très Bien", "Félicitations du Jury"),
  right = FALSE
)

comptage <- table(don$statut)

#----------------------------------------

pie(comptage)
PY

Luc Giraud
Messages : 15
Enregistré le : 20 Fév 2017, 09:46

Re: Un début ?

Messagepar Luc Giraud » 22 Fév 2017, 06:16

Toujours mieux ! Un grand merci ...

Ce code fonctionne très bien :

Code : Tout sélectionner

Notes=c(6,17.91,14.14,16.93,6.26,7.78,9.87,10.35,18.63,11.15,8.02,12.08,10.36,13.96,17.24,10.89,9.64,12.58,17.48,10.44,10.08,14.19,12.98,8.13,15,13.61,10.04,11.76,8.5,13.98,16.16,8.84,11.14,13.79,10.71,11.23,8.43,9.64,10.7,11.43,8.59,9.54,9.04,10.29,14.48,9.63,7.86,10.66,14.27,9.57,10.11,6.18,7.27,6.13,17.02,12.83,8.68,8.58,15.32,10.99,7.62,17.62,10.26,9.82,10.76,11.07,10.97,12.86,10.59,12.76,10.8,13.63,11.98,7.83,13.76,5.78,9.55,7.37,12.58,10.45,9.67,11.81,9.15,10.77,16.23,12.57,9.92,11.38,11.19,9.28,13.66,11.52,8.92,15.45,9.89,7.55,16.92,14.77,14.39,11.56,16,8.24,13.85,12.5,15.2,5.98,12.28,11.43,13.61,14.44,10.84,7.72,12.81,10.63,11.6,12.52,11.32,13,15.36,7.84,7.28,7.52,9.76,5.8,11.48,6.44,16.11,10.84,6.16,11.3,10.32,10.36,4.36,9.13,10.3,16.67,14.4,9,10.71,9.96,7.4,14.96,4.78,13.52,15.38,12,15.73,8.33,7.1,15.71,7.64,6.89,14.67,9.37,15,18.77,13.46,14.23,11.73,10.83,7.57,13.04,5.45,9.68,17.33,10.33,7.66,5.45,13.98,9.71,16.36,14.36,17.14,10.48,11.64,13.36,12.09,10.8,16.27,10.78,9.2,10.07,9.7,9.57,7.2,8.48,14.64,11.75,18.47,14.73,11.05,7,13.35,11.15,11.6,8.75,10.65,8.05,10.5,9.7,12.45,15.5,9.86,10.35,10.09,10.5,11.25,9.35,13.82,9.85,8.15,9.22,6.36,9.2,10.09,15.46,17.3,7.25,8.39,13.14,16.55,6.8,17.63,9.68,8.14)
Notes$statut <- cut(
  Notes,
  breaks = c(0, 8, 10, 12, 14, 16, 18, 20),
  labels = c("Échec", "Oral", "Admis", "Assez Bien", "Bien", "Très Bien", "Félicitations du Jury"),
  right = FALSE
)

comptage <- table(Notes$statut)

#----------------------------------------

pie(comptage)


Par contre quand on interroge le fichier joint:
http://casedesmaths.net/images/1.TS/Annee-2016-2017/Bac-Blanc/Notes-BBlanc-TS-22-fev.csv
je débouche sur une erreur ...
Une idée ?

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

Re: Un début ?

Messagepar Pierre-Yves Berrard » 22 Fév 2017, 08:05

Sans connaître le message d'erreur, non.
PY

Luc Giraud
Messages : 15
Enregistré le : 20 Fév 2017, 09:46

Re: Un début ?

Messagepar Luc Giraud » 23 Fév 2017, 07:29

Je reviens vers vous ...

Si je tape le code :

Code : Tout sélectionner

 don <- read.delim2("http://casedesmaths.net/images/1.TS/Annee-2016-2017/Bac-Blanc/Notes-BBlanc-TS-22-fev.csv")
summary(don)
don$statut <- cut(
  don$`Moyenne Generale`,
  breaks = c(0, 8, 10, 12, 14, 16, 18, 20),
  labels = c("Échec", "Oral", "Admis", "Assez Bien", "Bien", "Très Bien", "Félicitations du Jury"),
  right = FALSE
)

comptage <- table(don$statut)

#----------------------------------------

pie(comptage)

R me retourne le message d'erreur :

Code : Tout sélectionner

Error in cut.default(don$`Moyenne Generale`, breaks = c(0, 8, 10, 12,  :
  'x' doit être numérique



En tapant le code suite à un import Dataset from csv, tout fonctionne

Code : Tout sélectionner

 don=Notes_BBlanc_TS_21_fev
boxplot(don$`Moyenne Generale`)
summary(don$`Moyenne Generale`)
h=hist(don$`Moyenne Generale`,col=250,probability=TRUE)
h
coul=rainbow(7)
boxplot(don$`Moyenne Generale`~don$Classe,col=coul, main ="Bac Blanc TS Maths Janvier 2017")
notes=c(4,9,15)

effectifs=c(37,48,142)

coul=rainbow(3)
hist(
  rep(notes, effectifs),
  breaks = c(0,8,10,20),
  freq = FALSE,
  col = coul,
  main = "Histogramme classes d'amplitude distincte",
  xlab = "x",
  ylab = "effectifs"
)

pie(effectifs,col=coul,main="Bac Blanc TS 2017")
don$statut <- cut(
  don$`Moyenne Generale`,
  breaks = c(0, 8, 10, 12, 14, 16, 18, 20),
  labels = c("Échec", "Oral", "Admis", "Assez Bien", "Bien", "Très Bien", "Félicitations du Jury"),
  right = FALSE
)

comptage <- table(don$statut)

#----------------------------------------

pie(comptage)

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

Re: Un début ?

Messagepar Pierre-Yves Berrard » 23 Fév 2017, 08:37

C'est parce que vous avez changé de séparateur de colonne dans votre fichier csv.
PY

Stéphane Adamowicz
Messages : 206
Enregistré le : 07 Mar 2012, 10:13
Contact :

Re: Un début ?

Messagepar Stéphane Adamowicz » 23 Fév 2017, 08:56

Bonjour,

votre problème vient de ce que read.delim2 suppose une tabulation comme séparateur de colonnes, alors que votre fichier utilise le point-virgule.

Personnellement je préfère de loin utiliser read.table, en adaptant moi-même les différents paramètres. Par exemple, dans votre cas, le code suivant devrait convenir :

Code : Tout sélectionner

summary(Don <- read.table(file= "http://casedesmaths.net/images/1.TS/Annee-2016-2017/Bac-Blanc/Notes-BBlanc-TS-22-fev.csv", header=TRUE, sep=";", na.strings="NA", dec=",", blank.lines.skip=TRUE, strip.white=TRUE))
Stéphane Adamowicz
INRA, UR 1115 Plantes et Systèmes de Culture Horticoles (PSH)
domaine St Paul, site agroparc
84914 Avignon, cedex 9

Luc Giraud
Messages : 15
Enregistré le : 20 Fév 2017, 09:46

Re: Un début ?

Messagepar Luc Giraud » 23 Fév 2017, 09:05

Merci pour le conseil

En suivant votre méthode, j'aboutis à :

Code : Tout sélectionner

don  <- read.table(file= "http://casedesmaths.net/images/1.TS/Annee-2016-2017/Bac-Blanc/Notes-BBlanc-TS-22-fev.csv", header=TRUE, sep=";", na.strings="NA", dec=",", blank.lines.skip=TRUE, strip.white=TRUE)
summary(don)
don$statut <- cut(
  don$`Moyenne Generale`,
  breaks = c(0, 8, 10, 12, 14, 16, 18, 20),
  labels = c("Échec", "Oral", "Admis", "Assez Bien", "Bien", "Très Bien", "Félicitations du Jury"),
  right = FALSE
)

comptage <- table(don$statut)

#----------------------------------------

pie(comptage)


Je débouche sur le message d'erreur :

Code : Tout sélectionner

Error in cut.default(don$`Moyenne Generale`, breaks = c(0, 8, 10, 12,  :
  'x' doit être numérique

Stéphane Adamowicz
Messages : 206
Enregistré le : 07 Mar 2012, 10:13
Contact :

Re: Un début ?

Messagepar Stéphane Adamowicz » 23 Fév 2017, 09:07

Sans doute pvrcequ'il ne faut pas écrire, don$`Moyenne Generale` qui n'existe pas, mais don$Moyenne.Generale.
Stéphane Adamowicz

INRA, UR 1115 Plantes et Systèmes de Culture Horticoles (PSH)

domaine St Paul, site agroparc

84914 Avignon, cedex 9

Luc Giraud
Messages : 15
Enregistré le : 20 Fév 2017, 09:46

Re: Un début ?

Messagepar Luc Giraud » 23 Fév 2017, 11:55

Oups, il faut seulement changer don$`Moyenne Generale` en don$Moyenne.Generale et tout va bien...
Encore une question ...
Y a t-il un moyen simple d'afficher la fréquence ou l'effectif sur les labels du camenbert

Sur cet exemple :

Échec : 35 Oral : 48 Admis : 62 Assez Bien : 33 Bien : 25 Très Bien : 19 Félicitations du Jury : 3

Stéphane Adamowicz
Messages : 206
Enregistré le : 07 Mar 2012, 10:13
Contact :

Re: Un début ?

Messagepar Stéphane Adamowicz » 23 Fév 2017, 12:44

Code : Tout sélectionner

pie(comptage, labels= paste(names(comptage), comptage, sep=": "))
Stéphane Adamowicz

INRA, UR 1115 Plantes et Systèmes de Culture Horticoles (PSH)

domaine St Paul, site agroparc

84914 Avignon, cedex 9

Luc Giraud
Messages : 15
Enregistré le : 20 Fév 2017, 09:46

Re: Un début ?

Messagepar Luc Giraud » 23 Fév 2017, 17:40

C'est juste parfait !

Un grand merci


Retourner vers « Questions en cours »

Qui est en ligne

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