2017-05-22 8 views
1

データフレームを取得して.csvファイルに送信しようとしています。私は私のデータをループしようとのみAを選択し、ファイルに出力していlapplyでCSVを生成するデータフレームを解析する

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

:ここdput(df)を使用して、私のサンプルデータです。

filename <- levels(df$code) 

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

コードごとにファイルを書き込むにはlapplyを使用しますか?どんな助けもありがとう!ここで

+2

'地図(write.csv、スプリット(DF、DFの$コード)、ファイル名2)'。 – nicola

+0

Wow - Mapは私が必要としていたものです。ありがとう! したがって、「地図」という言葉のグーグルリングはかなり難しいです。 –

答えて

1

tidyverseソリューションです:

あなたは、単にその副作用(ファイルに書き込む)のための機能を使用すると、任意の値を返す必要がないので、歩行機能purrrパッケージからここに適切である:

library(tidyverse) 

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

この例で 'row.names = FALSE'をどうすれば使えますか? –

+1

'write_csv'関数(' write.csv'と混同しないでください)は、行名を書くことはありません。注: 'write_csv'は、' readr'パッケージからのtidyverse関数で、 'write.csv'の約2倍です。 'write.csv'を使いたいのであれば' ... paste0(x、 "_file.csv")、row.names = FALSE)}のように 'row.names = FALSE'を引数として渡すだけです。 ) ' – danh

+0

あなたはそうです。また、列名をFalseにしたかったあなたのソリューションは完璧でした! –

関連する問題