Seite 1 von 1

Export in .csv

Verfasst: Fr Jun 12, 2020 1:46 pm
von lolo
Hallo Forum,

ich möchte für spätere Analysen meine .csv Dateien kürzen und diese anschließend wieder in einzelne .csv Dateien speichern.
Bei mir hat es alle Datensätze in eine Datei gespeichert.
Wie kann ich die gekürzten Dateien einzeln abspeichern?

Hier mein Code, wie er bisher ist:

Code: Alles auswählen

setwd("C:/Users/Documents/Projekt/messungen") 
messungen <- dir(pattern="*.csv")
# Funktion Daten korrigieren
kuerzen <- function(messungen) {
  mess <- read.csv(messungen)
  kurz <- subset(mess, mess$Gas>="150") 
}  
neu<-lapply(messungen, FUN=kuerzen)
neu
write.csv2(neu,"C:/Users/Documents/Projekt/messungen_neu/messungen.csv", row.names = FALSE)
Vielen Dank.

Re: Export in .csv

Verfasst: Fr Jun 12, 2020 1:52 pm
von ruedi_br
Vermute ich richtig, dass auch schon in alles hintereinandergeklatscht ist?
VG
Ruedi

Re: Export in .csv

Verfasst: Fr Jun 12, 2020 1:58 pm
von jogo
Hallo lolo,

für Deine Funktion habe ich folgende kleine Änderung:

Code: Alles auswählen

# Funktion Daten korrigieren
kuerzen <- function(messung) {
  mess <- read.csv(messung)
  subset(mess, mess$Gas>="150") ## kurz
}  
siehst Du den Unterschied?
Ansonsten:
Das Objekt neu ist eine Liste von Dataframes und write.csv2() verarbeitet keine Liste, sondern einen Dataframe ...
was möchtest Du an dieser Stelle tun?

Gruß, Jörg

Re: Export in .csv

Verfasst: Fr Jun 12, 2020 2:08 pm
von lolo
Hallo Ruedi,

ja, wenn ich mir neu anzeigen lasse, werden in der Console alle Datenätze nacheinander
in der gekürzten Version angezeigt.

LG Lolo

Re: Export in .csv

Verfasst: Fr Jun 12, 2020 2:12 pm
von lolo
Hallo Jörg,

ja, ich habe die kleine Änderung bemerkt.

Ich kenne mich leider nicht wirklich aus.
Also kann ich "neu" gar nicht direkt als einzelne Dateien speichern, weil das eine Liste ist?
Das heißt, die Liste muss in die einzelnen Dataframes zerlegt werden, um diese im Anschluss zu speichern?
Wie geht so etwas?

Vielen Dank.
LG Lolo

Re: Export in .csv

Verfasst: Fr Jun 12, 2020 2:24 pm
von jogo
Hallo Lolo
lolo hat geschrieben: Fr Jun 12, 2020 2:12 pm ja, ich habe die kleine Änderung bemerkt.

Ich kenne mich leider nicht wirklich aus.
man sollte sich bei Funktionen vergewissern, dass sie etwas zurückliefern.
Wenn das Letzte eine Zuweisung ist, bin ich mir nicht sicher (könnte aber trotzdem funktionieren).
Die lange (und explizite) Form wäre

Code: Alles auswählen

  return(subset(...))
Also kann ich "neu" gar nicht direkt als einzelne Dateien speichern, weil das eine Liste ist?
jepp
Das heißt, die Liste muss in die einzelnen Dataframes zerlegt werden, um diese im Anschluss zu speichern?
Wie geht so etwas?
Es hängt davon ab, was Du möchtest. Z.B. kann man die vielen kleinen Dataframes aneinanderkleben (rbind())

Code: Alles auswählen

neu_gesamt <- do.call(rbind, neu)
write.csv2(neu_gesamt,"C:/Users/Documents/Projekt/messungen_neu/messungen.csv", row.names = FALSE)
oder die verkürzten Dataframes sollen einzeln jeder in eine Datei geschrieben werden.
Laut Deiner ersten Nachricht, möchtest Du jeden Dataframe in eine eigene Datei schreiben. Dann benötigst Du auch jeweils einen eigenen Dateinamen.
Das könnte dann so aussehen:

Code: Alles auswählen

setwd("C:/Users/Documents/Projekt/messungen") 

Dateien <- dir(pattern="*.csv")
# Funktion Daten korrigieren
kuerzen <- function(Datei) {
  mess <- read.csv(Datei)
  subset(mess, mess$Gas>="150") 
}  
neu<-lapply(Dateien, FUN=kuerzen)

neu

write_neu <- function(Data, Datei) {
  write.csv2(Data, paste0("../messungen_neu/", Datei), row.names = FALSE)
}

mapply(write_neu, neu, Dateien)
Gruß, Jörg

Re: Export in .csv

Verfasst: Mo Jun 15, 2020 10:53 am
von lolo
Dankeschön :D