2016-01-18 1 views
1

У меня есть таблица данных с ярусами, содержащими данные об использовании некоторых конкретных сервисов. Эти данные описывают использование различных типов услуг в различных регионах:Разбить агрегированную таблицу данных на несколько файлов CSV

type  region  quantity  timestamp 
small  A   2   05/01/15 
small  B   1   05/01/15 
big  A   1   05/01/15 
small  A   2   06/01/15 
small  B   1   06/01/15 
big  A   3   06/01/15 
...etc 

Я выполняю некоторые операции над рядами данных каждой уникальной комбинации типа и области (каждый из этих комбинаций производят свои собственные временные ряды так small-A должны рассматриваться независимо друг от small-B, например)

Я уже понял, как сделать эти виды операций с совокупными данными, как это:

aggregatedDT <- DT[, .(quant = sum(quantity)), by = .(week, region,type)] 

Теперь мне нужно т o сохранять каждую серию данных в отдельный файл CSV. Я не уверен, есть ли встроенная функциональность для такой операции, поэтому я хотел бы знать, возможно ли это.

Мой желаемый результат будет:

малого A.csv:

week1: total quantity 
week2: total quantity 
... 

И то же самое для малого B.csv, большой A.csv и т.д. В данный момент у меня есть эти данные в одной агрегированной таблице данных. Но эти файлы csv означают как вход для другого алгоритма, который должен забирать таймеры по одному.

ответ

4

Вы могли бы попробовать что-то вроде этого, чтобы остаться «внутри» data.table, в то время как порождающие соответствующие имена файлов:

aggregatedDT[,write.csv(.SD,file=sprintf("%s-%s.csv", unique(type),unique(region))), 
      by=.(region,type)] 

данных:

aggregatedDT <- data.table(expand.grid(week=1:2, region=c("A","B"),type=c("big","small")), 
          quant=1:8) 
+0

Ничего себе, я не рука не знаю, я могу использовать такая функция записи. Работает как шарм! Спасибо – Smajl

+0

'CJ' будет быстрее, чем' expand.grid', и он напрямую возвращает таблицу данных. – Arun

+0

Правда, но он использовался только для генерации данных, поэтому не уверен, действительно ли это проблема. – Heroka

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