エネルギー使用に季節的な影響を与えるためには、私が使用しているエネルギー使用情報を請求データベースから毎月の温度に合わせる必要があります。不規則な時系列を定期的な月別平均値に分割する - R
私はさまざまな長さと開始日と終了日の請求書を持つ請求データセットを使用しており、毎月の各アカウントの月間平均を取得したいと考えています。例えば、私は次のような特徴を持っている課金データベースを持っている:
acct amount begin end days
1 2242 11349 2009-10-06 2009-11-04 29
2 2242 12252 2009-11-04 2009-12-04 30
3 2242 21774 2009-12-04 2010-01-08 35
4 2242 18293 2010-01-08 2010-02-05 28
5 2243 27217 2009-10-06 2009-11-04 29
6 2243 117 2009-11-04 2009-12-04 30
7 2243 14543 2009-12-04 2010-01-08 35
私は、各月以内に一日あたりの平均量を得るために(アカウントごと)これらのやや不規則時系列を強制する方法を見つけ出すしたいと思いますそれは、各法案の中にまたがるようにされています
acct amount begin end days avgamtpday
1 2242 11349 2009-10-01 2009-10-31 31 X
2 2242 12252 2009-11-01 2009-11-30 30 X
3 2242 21774 2009-12-01 2010-12-31 31 X
4 2242 18293 2010-01-01 2010-01-31 31 X
4 2242 18293 2010-02-01 2010-02-28 28 X
5 2243 27217 2009-10-01 2009-10-31 31 X
6 2243 117 2009-11-01 2009-11-30 30 X
7 2243 14543 2009-12-01 2009-12-31 30 X
7 2243 14543 2010-01-01 2010-01-31 31 X
私は一度だけこれを実行する必要があるため、これを行うことができますどのツールにかなり依存しないんです。
テーブルには約150,000行の長さがありますが、ほとんどの標準ではそれほど大きくはありませんが、Rのループソリューションを作成するのに十分な大きさです。私は、Rで動物園、xts、tempdisaggパッケージを使用して調査しました。それぞれの請求書を分割し、既存の請求書内の各月ごとに1行を作成し、次にacctsで要約するためにtapply()正直なところ、それを効率的に行う方法は見当たりませんでした。 MySQLでは
、私はこれを試してみた:
選択1からn組合としてビューv3のすべてを作成したり、交換するすべての1つの組合を選択1を選択します。
ビューの作成または置換v as select 1 n from v3 a、v3 bユニオンすべてselect 1;
セット@n = 0;
ドロップテーブルが存在する場合はカレンダーです。 テーブルカレンダーを作成する(dt日付の主キー)。
カレンダーに挿入
dt をv a、v b、v c、v d、v e、vから選択キャスト( '2008-1-1' +間隔@n:= n n + 1日)選択ACCT、量、開始、終了、billAmtPerDay、合計(billAmtPerDay)、MonthAmt、 数()日数、合計(billAmtPerDay)/数()AverageAmtPerDay、年(DT)、月(DT) FROM(選択*、金額/日billAmtPerDay 請求書からb 開始と終了の間のdtの内部結合カレンダーc <> dt)x acct、amount、begin、end、billAmtPerDay、year(dt)、month (dt);
私は理解できませんが、私のサーバーはこのテーブルが気に入らず、別の計算を行っていても内部結合でハングアップします。私はそれに一時的なメモリの制限があるかどうか調べています。
ありがとうございます!ここで
請求月間は実際の月と一致するのか、または「新しい期間が始まると毎月のXがある」タイプの状況ですか? –
請求期間は不規則であるため、ほとんどの請求書は平均30 +/2日ですが、一部の請求書では90日以上の長さです。 – bikeclub
次に、ちょうど日付を指定して請求期間を計算する方法が必要なので、適切なグループ化ができます。 –