2017-02-23 1 views
0

をサブセット化することにより、複数のCSV抽出物を作成し、私は数多くのQ &として検索が、この問題のために、まだ解決策を見つけていない...データフレーム

(下記の試みを参照してください)私は、各トランザクションが割り当てられているトランザクションデータセットMAC_trans_sales_membersを持っています顧客ID、およびコホートに割り当てられた各顧客join.cohort列の'01/2016 '。 4Mの顧客が1つのExcelファイルに対して余りにも多くの行を持っているので、私は各参加コホートごとに別々のサブセットを作成し、それぞれのサブセットを別々のcsvにエクスポートしたいと考えています。約18のコホートがあるので、私はこのサブセットを自動化したい。

Iは、次のコードビットを試みたが、それらのどれも動作しない:

試み1

dt <- MAC_trans_sales_members 
setDT(dt)[, fwrite(.SD, paste0("output_", join.cohort,".csv")), 
     by = join.cohort, .SDcols=names(dt) ] 

Error: is.character(file) && length(file) == 1 && !is.na(file) is not TRUE 

試み2

setDT(MAC_trans_sales_members)[, write.csv(.SD, paste0("output_", join.cohort,".csv")), 
by = join.cohort, .SDcols=names(MAC_trans_sales_members) ] 

Error in file(file, ifelse(append, "a", "w")) : 
invalid 'description' argument 
In addition: Warning message: 
In if (file == "") file <- stdout() else if (is.character(file)) { : 
the condition has length > 1 and only the first element will be used 

試み3

daply(MAC_trans_sales_members, .(join.cohort), write.csv) 

...ちょうど林檎を吐き出すコンソールのデータの種類

何が間違っていますか?

答えて

1

join.cohortは、コードにjのベクターです。 。あなたの試み3用unique

MAC_trans_sales_members[, 
    fwrite(.SD, paste0("output_", unique(join.cohort), ".csv")), 
    by=join.cohort] 

を使用し、write.csvからfile引数が渡されていない

+0

おかげで - 'unique'を追加して、変更を行ったが、今私はまだエラーメッセージを取得しています: 'fwriteのエラー(.SD、paste0(" output_ "、一意(join.cohort)、" .csv ")): 「output_02/2016.csv」というファイルまたはディレクトリはありません。書き込み用の新しいファイルを作成できません(まだ存在しません)。ここに書き込む許可がありますか?ディスク上にスペースがあり、パスが存在しますか? ' 何か考えていますか? – Adam

+0

ファイルパスoutput_02/2016.csvが存在する必要があります。 'getwd()'を使って確認できるoutput_02フォルダが作業ディレクトリにあるか確認してください – chinsoon12

+0

Thanks - 'join.cohort'の変数は01/2016、02/2016などの形式になっています。 "/"をフォルダレベルにします。私は "/"に "/"を書き直しました。 – Adam