2014-07-11 13 views
15

Ho una domanda che è esattamente simile a questo question.Copia un R data.frame in un foglio di calcolo Excel

Come parte del mio lavoro, devo copiare l'output da R Studio Console in un foglio di lavoro Excel per creare grafici Excel. Tuttavia, R Studio Console utilizza un testo formattato, che excel non legge molto bene. Per compensare, sto sempre copiando da R Studio Console, incollando nel blocco note, quindi copiando in Excel. In questo modo, quando incollo una tabella, posso dire che Excel è in realtà un dato delimitato a larghezza fissa, e non solo un frammento di testo.

Come posso copiare l'output dalla console di R Studio in modo che venga inserito negli Appunti come testo non formattato in modo che sia possibile incollarlo direttamente in Excel e quindi organizzare i numeri in celle diverse? Ciò sarebbe molto utile perché non mi piace dover copiare/incollare tabelle nel blocco note, quindi eccellere per creare grafici.

+0

Potrebbe essere la pena di aggiungere la vostra voce a quella della persona sul sito di supporto RStudio, richiedendo una funzione aggiuntiva in RStudio. – user02814

risposta

20

Funziona con un semplice trucco.

Prima di tutto, devi visualizzare i tuoi dati nel pannello Viewer di Rstudio (puoi usare la funzione View()), quindi dovresti iniziare a selezionare dall'ultimo valore al primo, è dal basso verso l'alto (vedi immagine) . Si noti che la prima cella deve essere selezionata completamente. Infine, fai clic con il pulsante destro del mouse sulla selezione, copia, quindi incollalo in Excel come vuoi, con o senza formato.

enter image description here

Buona fortuna!

UPDATE:

sulla base di questo Post, altra alternativa sta facendo una nuova funzione per copiare il data.frame in Excel attraverso il 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) 

e infine Ctr + V in Excel :)

+0

non si è reso conto che copiare dall'angolo in basso a destra a quello in alto a sinistra è diverso da quello in alto a sinistra in basso a destra. – user2543622

+0

qualsiasi idea per quale motivo? – user2543622

+0

@ user2543622 non ne ho idea, forse è un bug di Rstudio. –

7

Dalla mia esperienza non v'è alcun modo conveniente, io uso due metodi:

Per piccoli frame di dati, utilizzare la funzione di RStudio View(data.frame), se si copiano solo i dati senza intestazioni funziona bene, ma se si desidera copiare con le intestazioni quindi è necessario incollarlo prima nel blocco note per aggiungere almeno un carattere alla cella vuota in alto a sinistra.

Per le grandi cornici dei dati, usi write.csv o write.xls (dal pacchetto WriteXLS)

7

Generalmente ho la seguente funzione:

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) 
    } 

Alcune note:

  • Max.size consente di specificare quanto grande sia il clipboard può diventare (in kilobyte) prima di annullare, è impostato su ~ 200MB al momento.
  • Funziona perfettamente per copiare un frame di dati R da una sessione R studio in Excel (con le impostazioni internazionali UE). Potrebbe essere necessario regolare i simboli separatore/decimale per farlo funzionare con le versioni statunitensi.

Come si usa:

df <- mtcars 
cb(df) 
# Paste in excel as 'values'