Gegevens exporteren van R naar Excel

Ik schrijf codes om de database van R naar Excel te exporteren, ik heb andere codes geprobeerd, waaronder:

write.table(ALBERTA1, "D:/ALBERTA1.txt", sep="\t")
write.csv(ALBERTA1,":\ALBERTA1.csv")
your_filename_in_R = read.csv("ALBERTA1.csv")
your_filename_in_R = read.csv("ALBERTA1.csv")
write.csv(df, file = "ALBERTA1.csv")
your_filename_in_R = read.csv("ALBERTA1.csv")
write.csv(ALBERTA1, "ALBERTA1.csv")
write.table(ALBERTA1, 'clipboard', sep='\t')
write.table(ALBERTA1,"ALBERTA1.txt")
write.table(as.matrix(ALBERTA2),"ALBERTA2.txt")
write.table(as.matrix(vecm.pred$fcst$Alberta_Females[,1]), "vecm.pred$fcst$Alberta_Females[,1].txt")
write.table(as.matrix(foo),"foo.txt")
write.xlsx(ALBERTA2, "/ALBERTA2.xlsx")
write.table(ALBERTA1, "D:/ALBERTA1.txt", sep="\t").

Andere gebruikers van dit forum hebben me dit geadviseerd:

write.csv2(ALBERTA1, "ALBERTA1.csv")
write.table(kt, "D:/kt.txt", sep="\t", row.names=FALSE)

voer hier de afbeeldingsbeschrijving in

Je kunt op de foto’s het resultaat zien dat ik heb gekregen van deze codes hierboven. Maar deze getallen kunnen niet worden gebruikt om verdere bewerkingen uit te voeren, zoals optellen met andere matrices.

Heeft iemand dit soort problemen ervaren?


Antwoord 1, autoriteit 100%

Een andere optie is het openxlsx-pakket. Het is niet afhankelijk van en kan lezen, bewerk en schrijf Excel-bestanden. Uit de beschrijving van het pakket:

openxlsx vereenvoudigt het proces van het schrijven en opmaken van Excel xlsx-bestanden vanuit R en verwijdert de afhankelijkheid van Java

Voorbeeld van gebruik:

library(openxlsx)
# read data from an Excel file or Workbook object into a data.frame
df <- read.xlsx('name-of-your-excel-file.xlsx')
# for writing a data.frame or list of data.frames to an xlsx file
write.xlsx(df, 'name-of-your-excel-file.xlsx')

Naast deze twee basisfuncties, heeft het openxlsx-pakket een groot aantal andere functies voor het manipuleren van Excel-bestanden.

Bijvoorbeeld, met de writeDataTable-functie kun je opgemaakte tabellen maken in een Excel-bestand.


Antwoord 2, autoriteit 55%

Onlangs gebruikt xlsx-pakket, werkt goed.

library(xlsx)
write.xlsx(x, file, sheetName="Sheet1")

waarbij x een data.frame is


Antwoord 3, autoriteit 30%

writexl, zonder Java-vereiste:

# install.packages("writexl")
library(writexl)
tempfile <- write_xlsx(iris)

Antwoord 4, autoriteit 17%

De WriteXLS-functie van de WriteXLS pakket kan gegevens naar Excel schrijven.

Als alternatief write.xlsxvan de xlsxpakket zal ook werken.


Antwoord 5

Hier is een manier om gegevens van een dataframe naar een Excel-bestand te schrijven doorverschillende ID’s en naar verschillende tabbladen (bladen) door een andere ID die is gekoppeld aan de ID van het eerste niveau. Stel je voor dat je een dataframe hebt met email_addressals één kolom voor een aantal verschillende gebruikers, maar elke e-mail heeft een aantal ‘sub-id’s’ die alle gegevens bevatten.

data <- tibble(id = c(1,2,3,4,5,6,7,8,9), email_address = c(rep('[email protected]',3), rep('[email protected]', 3), rep('[email protected]', 3)))

Dus id’s 1,2,3worden geassocieerd met [email protected]. De volgende code splitst de gegevens per e-mail en zet vervolgens 1,2,3in verschillende tabbladen. Het belangrijkste is om append = Truein te stellen bij het schrijven van het .xlsx-bestand.


temp_dir <- tempdir()
for(i in unique(data$email_address)){
  data %>% 
    filter(email_address == i) %>% 
    arrange(id) -> subset_data
  for(j in unique(subset_data$id)){
    write.xlsx(subset_data %>% filter(id == j), 
      file = str_c(temp_dir,"/your_filename_", str_extract(i, pattern = "\\b[A-Za-z0- 
       9._%+-]+"),'_', Sys.Date(), '.xlsx'), 
      sheetName = as.character(j), 
      append = TRUE)}
  }

De regex haalt de naam uit het e-mailadres en zet deze in de bestandsnaam.

Ik hoop dat iemand dit nuttig vindt. Ik weet zeker dat er elegantere manieren zijn om dit te doen, maar het werkt.

Trouwens, hier is een manier om deze individuele bestanden vervolgens naar de verschillende e-mailadressen in het data.framete sturen. Code gaat in tweede lus [j]

 send.mail(from = "[email protected]",
            to = i,
          subject = paste("Your report for", str_extract(i, pattern = "\\b[A-Za-z0-9._%+-]+"), 'on', Sys.Date()),
          body = "Your email body",
          authenticate = TRUE,
          smtp = list(host.name = "XXX", port = XXX,
                      user.name = Sys.getenv("XXX"), passwd = Sys.getenv("XXX")),
          attach.files = str_c(temp_dir, "/your_filename_", str_extract(i, pattern = "\\b[A-Za-z0-9._%+-]+"),'_', Sys.Date(), '.xlsx'))

Antwoord 6

Ik heb de verschillende pakketten uitgeprobeerd, inclusief de functie:

install.packages ("prettyR") 
library (prettyR)

delimit.table (Corrvar,"Name the csv.csv")## Corrvaris een naam van een object uit een uitvoer die ik op geschaalde variabelen had om uit te voeren een regressie.

Ik heb echter dezelfde code geprobeerd voor een uitvoer van een andere analyse (uitvoer van modelselectie van bezettingsmodellen) en het werkte niet. En na vele pogingen en verkenning heb ik:

  • de uitvoer van R gekopieerd (Ctrl+c)
  • in Excel-sheet heb ik het geplakt (Ctrl+V)
  • Selecteer de eerste kolom waar de gegevens staan
  • Klik in het “Data”-vignet op “Tekst naar kolom”

  • Selecteer de optie Gescheiden, klik op volgende

  • Vink de spatie aan in “Scheidingsteken”, klik op volgende

  • Klik op Voltooien (Einde)

Uw uitvoer zou nu een vorm moeten hebben die u gemakkelijk in Excel kunt manipuleren. Dus misschien niet de meest chique optie, maar het is voldoende als je je gegevens gewoon op een andere manier wilt verkennen.

PS. Als de labels in Excel niet exact zijn, komt dat omdat ik de labels vertaal vanuit mijn Spaanse Excel.

Other episodes