2016-12-16 74 views
2

對於r,我很新,所以如果這是基本的(我確信它是道歉),但我一直無法在任何地方找到答案。按r和data.table中的行和列排序

我有一個數據集,顯示具有約500,000行和30列的個別產品銷售,包括地區,銷售金額和日期。我使用的基本data.table功能基於單組創建總結,就像至今的銷售額和銷售由區(即DT [,SUM(銷售部),通過=日期]),它看起來像:

Date Sales 
12/1 50,000 
12/2 70,000 
12/3 40,000 

而且

Region Sales 
North 67000 
East 60000 
South 15000 
West 22000 

我想做的是視圖(例如)地區銷售和日期細分,所以像:

 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 

我希望能夠做到這包括在文件中的所有日期(所以我不'每次我爲不同的數據集和日期運行時,都需要手動將其更改)。這可能與data.table或其他?

謝謝!

+1

@Frank謝謝,我張貼作爲一個答案 – akrun

+0

@akrun這正是我一直在尋找,謝謝!還有一個問題 - 有沒有辦法在value.var字段中包含條件?假設我想根據地區和日期來計算新客戶的銷售數量 - 在我的第一個示例中,將按DT [,sum(NewCustomer ==「YES」)by = Date])按日期查看。這個條件是否可以納入dcast聲明中? – Stamb

+0

你可以試試'dcast(DT [NewCustomer ==「YES」],Region〜Date,length)' – akrun

回答

3

對於大型數據集,來自data.tabledcast應該是有效的。

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

注意:在這裏,我們假設'Sales'爲numeric類。從示例中顯示的數據來看,數字之間有,。所以,它可能是非數字的。如果非數字,轉換成numeric去除,

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

後再做dcast