web-dev-qa-db-fra.com

Copiez un R data.frame dans une feuille de calcul Excel

J'ai une question qui est exactement similaire à ceci question .

Dans le cadre de mon travail, je dois copier la sortie de la console R Studio dans une feuille de calcul Excel afin de créer des graphiques Excel. Cependant, la console R Studio utilise du texte formaté, qu'Excel ne lit pas si bien. Pour compenser, je copie toujours à partir de la console R Studio, collant dans le bloc-notes, puis copiant dans Excel. De cette façon, lorsque je colle un tableau, je peux dire à Excel qu'il s'agit en fait de données délimitées à largeur fixe, et pas seulement d'un bloc de texte.

Comment puis-je copier la sortie de la console R Studio afin qu'elle soit placée dans le presse-papiers sous forme de texte non formaté afin de pouvoir la coller directement dans Excel et ainsi organiser les nombres dans différentes cellules? Ce serait très utile car je n'aime pas avoir à copier/coller des tableaux dans le bloc-notes puis Excel pour faire des graphiques.

21
user2543622

Cela fonctionne avec une astuce facile.

Tout d'abord, vous devez visualiser vos données dans le volet Visualiseur de Rstudio (vous pouvez utiliser la fonction View()), puis vous devez commencer à sélectionner de la dernière valeur à la première, c'est de bas en haut (voir image). Notez que la première cellule doit être entièrement sélectionnée. Enfin, faites un clic droit sur la sélection, copiez, puis collez-la dans Excel comme vous le souhaitez, avec ou sans format.

enter image description here

Bonne chance!

MISE À JOUR:

basé sur ceci Post , une autre alternative fait une nouvelle fonction pour copier votre data.frame vers Excel via clipboard:

write.Excel <- function(x,row.names=FALSE,col.names=TRUE,...) {
  write.table(x,"clipboard",sep="\t",row.names=row.names,col.names=col.names,...)
}

write.Excel(my.df)

et enfin Ctr + V dans Excel :)

34
Darwin PC

Je source généralement la fonction suivante:

cb <- function(df, sep="\t", dec=",", max.size=(200*1000)){
    # Copy a data.frame to clipboard
    write.table(df, paste0("clipboard-", formatC(max.size, format="f", digits=0)), sep=sep, row.names=FALSE, dec=dec)
  }

Quelques notes:

  • Max.size vous permet de spécifier la taille du presse-papiers (en kilo-octets) avant son annulation, il est actuellement réglé sur ~ 200 Mo.
  • Il fonctionne parfaitement pour copier une trame de données R d'une session de studio R vers Excel (avec mes paramètres régionaux de l'UE). Vous devrez peut-être ajuster le séparateur/symboles décimaux pour le faire fonctionner avec les versions américaines.

Comment utiliser:

df <- mtcars
cb(df)
# Paste in Excel as 'values'
9
MattV

D'après mon expérience, il n'y a pas de moyen pratique, j'utilise deux méthodes:

Pour les petites trames de données, utilisez la fonction View(data.frame) de RStudio, si vous copiez uniquement des données sans en-têtes, cela fonctionne correctement, mais si vous souhaitez copier avec des en-têtes, vous devez d'abord les coller dans le bloc-notes pour ajouter au moins un caractère dans la cellule vide en haut à gauche.

Pour les trames de données volumineuses, utilisez write.csv ou write.xls (à partir du package WriteXLS )

8
Morad