Initiation à R

Pour analyser des données, on prévoit de les stocker dans des listes, des tableaux etc ... Nous allons détailler les diverses façons de stocker des données et de les manipuler.

Entrer les données à la main

Supposons qu'on ait une liste de nombres, par exemple 3, 5, 7 et 9. Le logiclel R a besoin qu'on lui dise que ces nombres, que l'on va rentrer à la main, appartiennent à une même liste. En même temps, on voudrait donner un nom à cette liste. On procède de la façon suivante:

> toto <- c(3,5,7,9)

>

Pour savoir si tout a bien fonctionnée, i.e. s'il a bien compris qu'il fallait stocker ces nombres sous le nom "toto", il suffit de taper le nom "toto" après le prompt et R affiche le contenu de "toto" sur le champ:

> toto

[1] 3 5 7 9

Si vous vouler récupérer le deuxième ou bien le premier, ou bien le troisième, ou bien le quatrième nombre de cette liste, la syntaxe est la suivante:

> toto[2]

[1] 5

> toto[1]

[1] 3

> toto[3]

[1] 7

> toto[4]

[1] 9

Si vous voulez récuperer le zeroième, cela donne quelque chose de bizarre !

> toto[0]

numeric(0)

On peut aussi enregistrer dans une liste des nombres réels avec virgule et des chaînes de caractères si on les met "entre guillemets"...

Récupérer les données à partir d'un fichier CSV

Heureusement, on a souvent beaucoup plus de données sous la main qu'une petite liste que l'on peut rentrer à la main. Dans le cas où des données sont contenues dans un fichier, il s'agit maintenant de les faire récupérer par le logiciel R afin de pouvoir utiliser les fonctions d'analyse statistique dont nous auront besoin pour mettre en évidence les propriétés principales que nous pourrons découvrir et qui ne sautent pas vraiment aux yeux dans un fichier de nombres indigeste et peu lisible.

On supposera que le format du fichier est un format du type "comma separated values" (csv). C'est à dire que chaque ligne contient une liste de valeurs qui peuvent être des nombres ou des lettres, et chaque valeur est séparée de ses voisines par une virgule. On suppose que la première ligne contient une liste de "labels" qui indique la signification des valeurs dans sa colonne. On pourra notamment

avoir accès à une colonne particulière en l'appelant par le label par lequel elle commence. 

On va commencer avec un fichier très petit. Le fichier s'appelle diffexp_example.csv. Ce fichier contient 3 colonnes et 6 lignes. Les trois colonnes ont pour labels "Patients" "Bernard" et "Cunegonde". 

"patients","Bernard","Cunegonde"

GeneA 15 60

GeneB 20 30

GeneC 100 25

GeneD 20 20

GeneE 52 34

La commande pour lire ce type de fichier est "read.csv". On doit donner à cette commande au moins un argument, mais on va lui donner trois argument pour indiquer comment cette commande peut être utilisée dans différentes situations. Le premier argument est le nom du fichier. Le second argument indique si la première ligne est constituée de lables ou bien si elle commence directement par des données. Le troisième argument indique que les données sont bien séparées par des virgules. Par exemple, la commande suivante va lire le fichier de données "diffexp-example.csv" et va stocker les données dans un tableau que l'on va appeler par exemple "diffexp".

> diffexp <- read.csv(file="diffexp_example.csv",head=TRUE,sep=",") 

on peut aussi se trouver dans une situation ou sep=";" et il suffit d'essayer les 

deux pour qu'une solution marche

Attention ! Si on travaille sous Windows et si le fichier n'est pas dans le repertoire courant, ce qui est 

fréquemment le cas, il suffit de taper 

> toto <- file.choose()

puis de parcourir les répertoires, trouver le bon fichier, cliquer dessus. (On obtient alors dans toto, 

le chemin du fichier en question.) On peut alors lire le fichier comme suit: 

> diffexp <- read.csv(file=toto,head=TRUE,sep=",")

Si on est sous Linux, il suffit de lancer R dans le même répertoire que celui ou se trouve le fichier.

Pour savoir si tout s'est bien passé, il faut lui demander ce qu'il y a dans la variables "diffexp". Il 

suffit de taper: 

> diffexp

  Patient Bernhard Cunegonde

1  GeneA          15          60

2  GeneB          20          30

3  GeneC         100          25

4  GeneD          20          20

5  GeneE          52          34

Il ne faut jamais résister à faire des statistiques de bases sur les données que l'on vient d'afficher comme les moyennes, les variances etc ... On réalise cette opération de débroussaillage grâce à la fonction "summary".

> summary(diffexp)

> Patient   Bernhard       Cunegonde    

Total   Max.   :1000.00   Max.   :1500.00  

GeneA   Min.   :   0.00   Min.   :   0.00  

GeneB   1st Qu.:  16.25   1st Qu.:  21.25 

GeneC   Median :  20.00   Median :  27.50  

GeneD   Mean   : 192.50   Mean   : 272.50 

GeneE   3rd Qu.:  80.00   3rd Qu.:  52.50  


Nous pouvons maintenant accéder à chaque colonne séparément en utilisant le signe "$" comme suit:

> diffexp$Bernhard

[1] 1000   15   20  100   20    0

S'il y a beaucoup de noms et qu'on voudrait savoir quel sont tous les labels présents dans ces données, on peut utliser la commande "names":

> names(diffexp)

[1] "Patients"      "Bernhard" "Cunegonde"

Nous allons regarder un autre fichier, un peu plus gros cette fois, que nous allons retrouver tout au long de ces Travaux Pratiques sous R. Les données sont disponibles ici 

(Envoyez moi votre email pour y avoir accès). Sauvez ces données sur votre compte en allant dans "file>download" et une fois qu'elle sont sauvées, remplacez toutes les virgules par un point car ce fichu excell fait la transformation automatiquement dans sa version francaise.

Ces données représentent l'expression de beaucoup de gènes pour des patients opérés d'une tumeur de la vessie et on s'intéresse à l'influence de l'expression de ces gènes sur le stade de la tumeur afin de pouvoir par exemple créer un nouveau marqueur. 

Les données sont receuillies par exemple dans le fichier que l'on appellera "vessie" en utilisant la commande "read.csv":

> data = read.csv(file="vessie.csv",header=TRUE,sep=",")

Pour voir ce que vous avez mis sous le nom de variable "data", il suffit bien sur de taper:

> data

Essayez et vous allez voir qu'il n'est pas facile de déduire à l'oeil nu aucune conclusion intéressante pour ces données. (Par contre, l'approche statistique va permettre d'y voir plus clair !)

Pour l'instant, ce qu'il faut savoir sur le type de variable que nous avons crée est la chose suivante: en utilisant la commande  "read.csv", le logiciel R utilise un type specifique de variable appelé "data frame." Toutes les données sont stockées dans un data frame par colonnes. Si lorsque vous utilisez R, vous n'êtes par sur(e) du type de donnée auquel vous avez affaire, il suffit d'utiliser la commande "attributes". Cette commande énumère toutes les choses que R utilise pour décrire la variable sur laquelle vous vous interrogez:

> attributes(data)

$names

$class

[1] "data.frame"

$row.names

La première chose que R garde est la liste des labels des colonnes. 

Si vous savez qu'une variable est un "data frame" mais que vous n'êtes pas sûr de bien vous rappeler des labels qui sont utilisés pour chaque colonne, il suffit de taper la commande "names":

> names(data)

Si vous voulez travailler sur une colonne en particulier, rappelons qu'il 

suffit d'utiliser le signe "$" . Par exemple, la première colonne du "data frame" 

"data" est appelée en utilisant la commande  "data$Nom:"

> data$Nom

Récupérer les données à partir d'un fichier txt

C'est très simple ! il suffit de taper

> toto <- file.choose()

puis de fouiller dans les sous-répertoires des sous-sous-répetertoires dans lesquel 

vous avez caché votre fichier de données ... puis quand c'est fait, 

> toto <- read.table(file=toto)

et voila ! 


Pour retourner a la liste des TP, cliquer ici