在数据库查询中创建组

时间:2011-12-14 12:04:48

标签: r grouping

  TRANSACTION_DATE_TIME TRANSACTION_AMOUNT TRANSACTION_TYPE TRANSACTION_MODE
1    2010-4-1.18.0. 17. 0               2000       Withdrawal             Cash
2   2010-4-2.14.44. 47. 0               2000       Withdrawal             Cash
3   2010-4-2.16.53. 33. 0               6000       Withdrawal             Cash
4   2010-4-5.16.22. 26. 0               2100       Withdrawal             Cash
5   2010-4-7.21.23. 11. 0                 99       Withdrawal             Cash
6   2010-4-8.16.15. 35. 0                700       Withdrawal             Cash
7  2010-4-15.18.11. 17. 0                250          Deposit         Transfer
8  2010-4-17.14.17. 58. 0                737          Deposit         Transfer
9  2010-4-19.14.19. 42. 0               1600       Withdrawal             Cash
10 2010-4-30.15.55. 49. 0              13950          Deposit         Transfer

这是我从DB Query获得的矩阵。我想根据TRANSACTION_TYPE对行进行分组,并找到提取和存款组的TRANSACTION_AMOUNT的相应总和。帮我用R语言做同样的事。

2 个答案:

答案 0 :(得分:2)

有很多方法可以攻击它,但一种方法是使用包sqldf,它允许您对数据帧执行类似SQL的操作。我沿途学到的一件事是,你不能有点“。”在名称中或sqldf会窒息。

data_summary <- sqldf("SELECT TRANSACTION_TYPE, SUM(TRANSACTION_AMOUNT) as Total FROM df GROUP BY TRANSACTION_TYPE) 

答案 1 :(得分:1)

我可以考虑另外两个选项:

  1. 在您之前向原始数据库查询添加分组子句 将数据拉入R。
  2. 查看data.table包,例如:

    dtf&lt; - data.frame(age = rchisq(100000,10),group = factor(sample(1:10,100000,rep = T)))
    dt&lt; - data.table(dt)
    DT [,列表(平均=平均(年龄),SD = SD(岁)),通过=基团]

  3. (示例borrowed from here