0

売上を年初来の累計売上として表示するデータを変換しようとしています。累計ではなく、日ごとの売上を表示したい。

データの例を次に示します。

Product, Geography, Date, SalesThisYear
Prod_1, Area_A, 20130501, 10
Prod_2, Area_B, 20130501, 5
Prod_1, Area_B, 20130501, 3
Prod_1, Area_a, 20130502, 12
Prod_2, Area_B, 20120502, 5
Prod_1, Area_B, 20130502, 4
...

したがって、変換されたデータは次のようになります。

Product, Geography, Date, SalesThisYear*, DailySales
Prod_1, Area_A, 20130501, 10, 10
Prod_2, Area_B, 20130501, 5, 5
Prod_1, Area_B, 20130501, 3, 3
Prod_1, Area_a, 20130502, 12, 2
Prod_2, Area_B, 20120502, 3, 0
Prod_1, Area_B, 20130502, 4, 1

これは、その後の分析で使用できます。

  • これがアプローチに何らかの違いをもたらす場合に備えて、最新の販売情報を含む新しいデータ ファイルを毎日受け取ります。したがって、新しいデータを既存のデータに追加し、毎日の売上高を計算する必要があります。これが、変換されたデータに SalesThisYear フィールドを保持した理由です。そのため、このフィールドを使用して、次のデータ ファイルが到着したときに新しい DailySales の数値を計算できます。

私はRが初めてなので、この問題を解決するための最良の方法は何かを考えています。私は 2 つのカテゴリ フィールドを持っていることを認識しているので、これらのフィールドを考慮に入れるために 1 つのアプローチを使用できると予想していました。私の全体的な考えは、関数を使用してから適用コマンドを使用して、データセット全体に対して関数を実行することでした。概要として、私の考えは次のとおりです。

(最初に R にデータ ファイルをロードします。rbindを使用して 2 番目のデータ ファイルをRに追加します。)

以下を実行する関数を作成します。

  1. 要因/類似品を使用して製品と地域を特定する
  2. 最大の日付と 2 番目に大きい日付を特定する
  3. 製品と地域の組み合わせごとに、ステップ 2/ で取得した日付値を使用して、追加されたデータと元のデータの SalesThisYear 値を見つけます。ここでサブセット関数を使用することを考えています。2 つの値を引きます。これが DailySales 値になります。(新しい地域または製品が導入された場合に備えて、エラー チェック ロジックが必要になります)
  4. この新しい DailySales 値を結果に追加します。

データ量は 1 日あたり約 12 万行であるため、手順 3 で for ループを使用する標準的な方法はお勧めできません。

上記のアプローチは適切ですか?それとも、私が学ぶ必要がある未知の未知がありますか? :)

4

1 に答える 1