2011-12-14 10 views
1
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クエリから取得した行列です。 TRANSACTION_TYPEに基づいて行をグループ化し、WithdrawalとDepositグループの対応する合計額をTRANSACTION_AMOUNTにします。私がR言語で同じことをするのを助けてください。データベースクエリ内のグループの作成

答えて

2

これを攻撃する方法はたくさんありますが、データフレームに対してSQLライクな操作を実行できるようにするsqldfというパッケージを使用する方法もあります。道に沿って学んだことの1つは、あなたがドットを持つことができないということです。名前がsqldfになるとチョークします。

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

+1クール、私はあなたがそれを行うことができるか分からなかった。 Rの大会では、それを使うのはいつもナットの力になっています。変数名では、ほとんどの他の主要言語では、クラスのメンバーにアクセスするための演算子です。 sqldfは、代わりに変数名にアンダースコアやキャメルケーシングを使用するもう一つの理由のように見えます... –

+0

名前について心配する必要がない場合は、確かにこれを行う他の方法があります。また、それを調べる価値があるかもしれませんか?私はかなりsqldfに依存しているので、私は "。"名前で – Btibert3

+0

sqldfはいくつかのデータベースをサポートしており、サポートされているデータベースのドライバはドットで名前をサポートしています。例えばH2のjavaデータベースとRH2ドライバでは、これはうまくいきます: 'library(RH2);ライブラリ(sqldf); sqldf( 'select "Petal.Length" from iris limit 3') ' –

1

私は2つの追加のオプションを考えることができます、あなたがdata.tableパッケージをチェックR.

  • にデータを引っ張っ 前に、元のデータベースクエリにグループ化句を追加し

    1. 例えば:

      DTF < - data.frame(年齢= rchisq(100000,10)、基=因子(試料(1:10,100000、担当者= T)))
      DT < - data.table(DT)
      DT [リスト(平均=(年齢)、SD = SD(歳)平均)=基によって]

    (例borrowed from here

  • 関連する問題