web-dev-qa-db-fra.com

Comment enregistrer un bloc de données dans un fichier txt ou Excel séparé par des colonnes

J'ai une question sur la sauvegarde de trames de données au format txt ou Excel. J'ai une trame de données dans R mais quand je l'enregistre:

  1. En utilisant d'abord la fonction write.table() lorsque j'ouvre le bloc de données enregistré, par exemple dans Excel, toutes les colonnes sont regroupées dans une colonne et vous devez séparer les colonnes dans Excel avec le risque de perdre des données. La même chose se produit avec la fonction write.csv().

Est-il possible d'enregistrer dans R un cadre de données avec toutes les colonnes séparées. Merci.

16
Duck

Ma méthode préférée pour y parvenir (étant donné que j’ai fréquemment besoin de partager des trames de données traitées en R avec des utilisateurs non-R et qu’il est pratique pour eux de double-cliquer et de les ouvrir correctement dans Excel) est:

write.table(x,"filename.txt",sep="\t",row.names=FALSE)

Comme mentionné ci-dessus, l'onglet sep="\t" de l'argument délimite votre fichier, mais je pense qu'il est également utile de supprimer les noms de ligne sauf si nécessaire. 

18
user29609

Le délimiteur par défaut pour write.table est un espace unique. Si .txt est souvent utilisé pour désigner une feuille de calcul, tout ce qu’il indique en réalité est qu’il s’agit d’un fichier texte. Si vous voulez un .tsv ou un fichier avec des valeurs séparées par des tabulations, essayez write.table(x,sep="\t"). Ceci délimitera votre fichier par onglet, et Excel devrait en tenir compte lorsque vous essayez d'ouvrir le fichier. Je recommande vraiment de donner à ?write.table (et ?read.table pendant que nous y sommes) une bonne lecture. Parce que vraiment, même si votre code est parfait, si vous lisez ou écrivez vos données de manière incorrecte, à quoi ça sert?

2
nwknoblauch

Vous devriez pouvoir le faire avec write.csv()

Ceci est un exemple qui fonctionne sur ma machine. Je crée un data.frame, l'enregistre avec write.csv et l'ouvre dans Excel sans problème.

a <- 1:5
b <- 6:10
c <- 11:15

df <- data.frame(a,b,c)

write.csv(df, 'test2.csv')
1
vitale232

Il est possible que le fichier que vous enregistrez soit correct, vous ne le chargez pas correctement dans Excel (difficile à savoir avec certitude). Lorsque vous importez dans Excel, vous pouvez spécifier le séparateur et d’autres options. Vous pouvez également simplifier le processus en définissant certaines options dans write.table. Vérifiez également vos paramètres régionaux. Le séparateur par défaut peut être différent selon que votre ordinateur pense que c'est en Europe (ou dans certains pays) ou aux États-Unis (ou dans certains autres pays), il se peut que votre version de R et votre version d'Excel ne vous accordez pas sur la région (et donc le séparateur à utiliser) dans laquelle vous vous trouvez.

Vous pouvez également consulter le package XLConnect, qui créera directement des fichiers Excel sans passer par un fichier texte. (Il y a quelques autres paquets qui vont aussi écrire dans des fichiers Excel, mais XLConnect est celui avec lequel j'ai eu la meilleure expérience).

Une autre option pour transférer rapidement un cadre de données ou une matrice vers Excel (du moins sous Windows, vous ne pouvez pas savoir si cela fonctionne sur d'autres systèmes d'exploitation) consiste à utiliser un tableau d'écriture avec file="clipboard" et sep="\t". Cliquez ensuite sur une cellule dans la fenêtre Excel " Coller "et les données seront dans Excel via le Presse-papiers plutôt que sous forme de fichier.

1
Greg Snow

Utilisez ci-dessous 

install.packages(openxlsx)
library(openxlsx)


write.xlsx(dataframe,"C:/Users/santoshr/Desktop/export10.xlsx",sheetName = "Sheet1",col.names = TRUE,showNA=FALSE)
0