使用R,我需要爲每個部門的前兩名員工創建一份報告,報告費用最高,併爲該部門的其他員工添加一個「其他」。例如,我需要一個類似這樣的報告。總結和排名數據框
Dept. EmployeeId Expense
Marketing 12345 100
Marketing 12346 90
Marketing Others 200
Sales 12347 50 <-- There's just one employee with expenses
Research 12348 2000
Research 12349 900
Research Others 10000
換句話說,我需要總結一下數據,重點關注費用最高的前兩名員工。費用總額應該是公司費用總額。
employeIds <- sample(1000:9999, 20)
depts <- sample(c('Sales', 'Marketing', 'Research'), 20, replace = TRUE)
expenses <- sample(1:1000, 20, replace = TRUE)
df <- data.frame(employeIds, depts, expenses)
# Based on that data, how do I build a table with the top 2 employees with the most expenses in each department, including an "Other" employee per department.
我是R的新手,我不確定如何解決這個問題。在SQL中,我可以使用RANK()函數和JOIN,但這不是一個選項。
令人印象深刻的答案Arun!這正是我所期待的! data.frame和date.table有什麼區別?什麼代表.N?如果我想要每個部門的前5名員工呢?非常感謝您的回答! – Martin 2013-04-22 14:54:57
@Martin,我通過設置對應於* top k employees *的變量'k'來修改答案。您可以將其設置爲2或5以獲得適當的結果。 'data.table'是一個建立在'data.frame'之上的外部包,但是非常快速和高效。你可以先看看'vignettes' [** here **](http://cran.r-project.org/web/packages/data.table/index.html) – Arun 2013-04-22 16:51:11