2016-12-16 6 views
2

これは基本的な(私は確信していますが)どこでも答えを見つけることができなかったので、私は非常に謝罪しています。rでデータとテーブルの列と行でグループ化

地域、販売額、日付など、約50万行30列の個別の製品販売を示すデータセットがあります。私は地域別、日付別の売上高及び売上のように、単一のグループに基づいて要約を作成するための基本的なdata.table機能を使用しています(つまりDT [、合計(販売)、によって=日付])、のように見えた:

Date Sales 
12/1 50,000 
12/2 70,000 
12/3 40,000 
私が行うことができるようにしたいと思い

 12/1 12/2 12/3 
North 10,000 15,000 12,000 
East 5,000 25,000 30,000 
South 2,000 3,000 10,000 
West 6,000 7,000 9,000 

:私がやりたいのは何

そして

Region Sales 
North 67000 
East 60000 
South 15000 
West 22000 

は、ビュー(たとえば)地域や日付によって破壊販売、そうのようなものですこれはファイルに含まれているすべての日付(これは私が '異なるデータセットと日付に対してこれを実行するたびに手動で変更する必要があります)。これはdata.tableなどで可能ですか?

ありがとうございます!

+1

@Frankのおかげを行う、私は感謝、探していたまさにそれだ答え – akrun

+0

@akrunとして掲載しました!もう1つの質問 - value.varフィールドに条件を含める方法はありますか?最初の例では、地域別と日付別に新規顧客への売上数を数えたいとします。これは、日付で表示するためにDT [、sum(NewCustomer == "YES")、by = Date])です。その条件をdcastステートメントに組み込むことはできますか? – Stamb

+0

あなたは 'dcast(DT [NewCustomer ==" YES "]、Region〜Date、length)'を試すことができます – akrun

答えて

3

大きなデータセットの場合、dcastからdata.tableまでは効率的でなければなりません。

dcast(DT, Region~Date, value.var="Sales", sum) 

注:ここでは、「Sales」はnumericクラスとします。この例で示されたデータからは、数字の間に,があります。したがって、数値ではない可能性があります。それ以外の数値の場合は、,

DT[, Sales := as.numeric(gsub(",", "", Sales))] 

を削除した後numericに変換し、dcast

関連する問題