2017-05-22 5 views
1

Ich versuche, einen Datenrahmen zu nehmen und an .csv Datei (en) zu senden. Hier ist mein Beispieldaten dput(df):Analysieren Datenrahmen CSV-Erstellung mit Lapply

df <- structure(list(ident = 1:35, code = structure(c(1L, 1L, 1L, 1L, 
1L, 1L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 
4L, 4L, 4L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 6L, 6L, 6L, 6L, 6L), .Label = c("A", 
"B", "C", "D", "E", "F"), class = "factor"), Desc = structure(c(3L, 
1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 
2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 
3L, 1L), .Label = c("lax", "mia", "nyc"), class = "factor")), .Names = c("ident", 
"code", "Desc"), class = "data.frame", row.names = c(NA, -35L 
)) 

ich eine Schleife durch meine Daten ich versucht, und wählen Sie nur A und Ausgabe in Datei.

filename <- levels(df$code) 

filename2 <- paste0(filename, "_file.csv") 

Würde ich lapply verwenden, um eine Datei für jeden Code zu schreiben? Jede Hilfe wäre willkommen! Hier

+2

'Karte (write.csv, split (df df $ code), filename2)'. – nicola

+0

Wow - Karte ist genau das, was ich brauchte. Vielen Dank! So Googeln für den Begriff 'Map' ist ziemlich schwierig. –

Antwort

1

ist eine tidyverse Lösung:

Da Sie einfach eine Funktion für die Nebenwirkungen verwenden möchten (Schreiben in eine Datei), und keine Werte zurückkommen müssen, die zu Fuß Funktion aus dem purrr Paket ist hier angebracht:

library(tidyverse) 

walk(unique(df$code), function(x) {write_csv(df %>% filter(code == x), paste0(x, "_file.csv"))}) 
+0

Wie würde ich die 'row.names = FALSE' in diesem Beispiel verwenden? –

+1

Die 'write_csv'-Funktion (nicht zu verwechseln mit' write.csv') schreibt niemals Zeilennamen. Hinweis: 'write_csv' ist eine Tidyverse-Funktion aus dem 'readr'-Paket und ist etwa 2x so schnell wie' write.csv'. Wenn Sie 'write.csv' verwenden wollen, können Sie' row.names = FALSE' einfach als Argument übergeben, wie zB '... paste0 (x," _file.csv "), row.names = FALSE)}) ' – danh

+0

Du hast Recht Ich hatte sie durcheinander gebracht. Ich wollte auch, dass Spaltennamen falsch sind. Deine Lösung war perfekt! –

Verwandte Themen