2016-11-07 6 views
-1

私は28日の間隔で、1月20日から13のデータポイントを販売しています。これは私に13のデータポイントを与える。これを毎月の売上(近似値)に変換する方法RRデータポイントを毎月13に変換する

+2

データの最小限の実例を提供してください。この方法で、より質の高い回答が得られます。 – LAP

+1

[良い質問をする方法](http://stackoverflow.com/help/how-to-ask)と[再現可能な例を与える方法](http://stackoverflow.com/questions)の情報をお読みください。/5963269)。これは他の人があなたを助けることをはるかに容易にします。 – Jaap

+0

最小限の作業例を求める他のコメントに加えて、予想される出力についてより具体的に記述してください。データポイントが同じ月に落ちたときに販売値を追加するだけですか? (人工的な「ピーク」月を作成します)または、売上値を補間(一定間隔での1日あたりの平均売上)し、その後月ごとに集計しますか?後者の場合、日付に指定された売上値は、前の期間に属し、指定された日付に終了しますか? – Uwe

答えて

1

aggregate関数とmonths関数を以下のように組み合わせてください。 months関数は、指定された日付の月を返します。この場合、aggregate関数は、各月の売上を合計します。

# Create some toy data 
set.seed(1) 
df <- data.frame(date = as.Date("2016-01-20") + 0:12*20, 
       sales = runif(13)) 
head(df) 
#   date  sales 
#1 2016-01-20 0.26550866 
#2 2016-02-09 0.37212390 
#3 2016-02-29 0.57285336 
#4 2016-03-20 0.90820779 
#5 2016-04-09 0.20168193 
#6 2016-04-29 0.89838968 

# Create the month names and numbers 
df$month_num <- format(df$date, format = "%m") 
df$month_lex <- months(df$date) 
head(df) 
#   date  sales month_num month_lex 
#1 2016-01-20 0.26550866  01 januar 
#2 2016-02-09 0.37212390  02 februar 
#3 2016-02-29 0.57285336  02 februar 
#4 2016-03-20 0.90820779  03  marts 
#5 2016-04-09 0.20168193  04  april 
#6 2016-04-29 0.89838968  04  april 

# Aggregate by month number to get correct sorting 
aggregate(sales ~ month_lex*month_num, sum, data = df) 
# month_lex month_num  sales 
#1 januar  01 0.26550866 
#2 februar  02 0.94497726 
#3  marts  03 0.90820779 
#4  april  04 1.10007162 
#5  maj  05 0.94467527 
#6  juni  06 1.28991184 
#7  juli  07 0.06178627 
#8 august  08 0.38253133 
#9 september  09 0.68702285 

あなたは渡さ月名を取得しないためにaggregate呼び出しでmonth_lex*を残すことができます。

私はデンマークのシステムにいるという事実を無視してください。より具体的な回答が必要な場合は、入力を示す最小限のデータ例を提供し、出力を期待する必要があります。

EDIT:@UweBlockコメントを追加するように更新されました。

+0

28日ではなく、1日に20日しか使用していません。このため、あなたの「事業年度」が9月に時期尚早に終了するのはこのためです。 – Uwe

+0

グループ化に 'months()'を使うのは、結果がアルファベット順にソートされるので、ほとんどの場合、悪い考えです。数字の月、ISO標準に準拠した月(2016-09など)、または完全な月の名前を適切にソートされた要素に変換する方がよいでしょう。 – Uwe

+0

@UweBlockソート順に関する回答を更新しました。 28日ではなく20日については、これは私の間違いであり、わずかに「間違った」おもちゃデータを与えますが、問題に対する答えと解決に実質的な影響はありません。 –

関連する問題