Jongler entre R et le presse-papier

Un des problèmes auquel l’on est souvent confronté avec l’utilisation de R est l’importation ou l’exportation de données depuis un tableur (Excel ou Calc). Les solutions souvent utilisées sont l’utilisation de packages (tels que XLConnect, readxl ou xlsx) qui permettent de le faire de façon stable. Toutefois, on souhaite parfois une solution simple et rapide comme un simple copier-coller : c’est en fait possible avec R en utilisant le Clipboard (presse-papier) ! Les fonction ctrl_c() et ctrl_v() permettent d’utiliser plus facilement et rapidement ce Clipboard : après avoir copié une table d’un tableaur, utiliser ctrl_v() sous R pour l’exporter ou, à l’inverse, pour exporter une table x de R vers un tableur utiliser ctrl_c(x) et ensuite coller le tableur (en appuyant par exemple sur Ctrl+V)

Importer des données depuis un tableur

Pour importer des données depuis le presse-papier, il suffit d’utiliser la fonction ctrl_v(). Prenons par exemple le premier tableau de l’Information Rapide de l’enquête mensuelle de conjoncture dans l’industrie de juin 2017 (https://www.insee.fr/fr/statistiques/2875875) et l’ouvrir avec un tableur (en faisant par exemple un copier/coller) :

Industrie manufacturière Moy* Mars-17 Avr-17 Mai-17 Juin-17
Indicateur synthétique 100 106 108 109 108
Production passée 5 9 17 14 10
Stocks 13 7 6 5 6
Carnets de commandes globaux -18 -9 -6 -5 -3
Carnets de commandes étrangers -14 -5 -1 -2 -2
Perspectives personnelles de production 5 11 12 16 13
Perspectives générales de production -9 3 1 7 17

Pour copier-coller le tableau en entier, commencez par sélectionner les colonnes concernées (par exemples les cellules A1 à F8 si le tableau commence en A1), appuyez sur Ctrl+C et utiliser sous R la fonction ctrl_v() :

x <- ctrl_v()
x
##                  Industrie manufacturière Moy* Mars-17 Avr-17 Mai-17 Juin-17
## 1                  Indicateur synthétique  100     106    108    109     108
## 2                       Production passée    5       9     17     14      10
## 3                                  Stocks   13       7      6      5       6
## 4            Carnets de commandes globaux  -18      -9     -6     -5      -3
## 5          Carnets de commandes étrangers  -14      -5     -1     -2      -2
## 6 Perspectives personnelles de production    5      11     12     16      13
## 7    Perspectives générales de production   -9       3      1      7      17

La fonction ctrl_v() utilise la fonction read.table() pour importer les données. On peut donc personnaliser l’importation des données (voir pour cela les paramètres de read.table()). En particulier :

  • header : booléen indiquant si la première ligne contient le nom des colonnes (par défaut c’est le cas dans ctrl_v()) ;
  • stringsAsFactors : booléen indiquant s’il faut convertir les chaînes de caractères au format factor (par défaut ce n’est pas le cas dans ctrl_v()) ;
  • dec : c’est le paramètre spécifiant le séparateur décimal du fichier lu. Par défaut c’est la virgule dans ctrl_v() car elle correspond au séparateur utilisé dans les tableurs francophone. Si l’on utilise une autre version d’un tableur c’est le point qui va être utilisé : utiliser dans ce cas l’option dec = ".".

Exporter les données depuis R vers un tableur

Alors que pour importer les données depuis le presse-papiers on utilisait la fonction ctrl_v(), pour exporter les données sous Excel il faut tout simplement utiliser la fonction ctrl_c(). Cette dernière utilise la fonction write.table() : pour personnaliser l’export on peut donc modifier les paramètres de write.table(). En particulier :

  • col.names : paramètre indiquant s’il faut exporter le nom des colonnes (par défaut c’est le cas) ;
  • row.names : paramètre indiquant s’il faut exporter le nom des lignes (par défaut ce n’est pas le cas) ;
  • dec : c’est le paramètre spécifiant le séparateur décimal à utiliser. Par défaut c’est la virgule qui est utilisé dans ctrl_c() (car c’est le séparateur décimal des tableurs francophones). Si l’on souhaite exporter dans un tableur non francophone il faut donc utiliser l’option dec = ".".

Pour exporter la précédente table il suffit donc de lancer le code R suivant et de faire un Ctrl+V dans le tableur utilisé :

ctrl_c(x)