2017-02-23 8 views
0

Я искал многочисленные Q & Как, но не нашел решения еще для этой проблемы ... (см попытки ниже)Создание нескольких экстрактов Csv по Подменят данные кадра

У меня есть набор данные транзакционных MAC_trans_sales_members где назначена каждая транзакция к идентификатору клиента и каждому клиенту, назначенному для когорты, например '01/2016 'в колонке join.cohort. Есть 4M клиентов, поэтому слишком много строк для 1 файла excel, поэтому я хотел бы создать отдельные подмножества для каждой когорты соединений и экспортировать каждое подмножество в отдельный csv. Есть около 18 когорт, поэтому я хочу автоматизировать это подмножество.

Я попытался следующие биты кода, но ни один из них не работает:

попытка 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) 

... просто извергает lin данных в консоли

Что я делаю неправильно?

ответ

1

join.cohort - это вектор в j в вашем коде. использовать unique

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

за попытку 3, file аргумент write.csv не передается в

+0

Спасибо - сделали ваши изменения, добавив 'unique', но теперь я все еще получаю сообщение об ошибке:. 'Ошибка в fwrite (.SD, paste0 (" output_ ", unique (join.cohort)," .csv ")): Нет такого файла или каталога: 'output_02/2016.csv'. Не удалось создать новый файл для записи (он еще не существует). У вас есть разрешение писать здесь, есть ли место на диске и существует ли путь? ' любые мысли? – Adam

+0

Путь к файлу output_02/2016.csv должен существовать для его работы. Проверьте, находится ли папка output_02 в вашем рабочем каталоге, которую вы можете проверить, используя 'getwd()' – chinsoon12

+0

Спасибо - переменные в 'join.cohort' находятся в формате 01/2016, 02/2016 и т. Д., Поэтому выходной код был взяв «/» в качестве уровня папки. Я переписал «/» на «-», и теперь он экспортирует штраф и так быстро! – Adam

Смежные вопросы