3

あなたが銀行口座情報を持っているとしましょう:

a=data.frame(Transaction=c(1,2,6,3,8,3,5.25,6.99,2,5),type=c("CREDIT","DEBIT","DEBIT","DEBIT","DEBIT","CREDIT","CREDIT","CREDIT","DEBIT","CREDIT"))

最初の列に金額を含む行と、それがアカウントに取得されたか追加されたかを示します。最初の行を2番目の行に基づいて操作するために、貸方の場合は正に保ち、借方の場合は否定にします。これまでのところ、私が思いついた最高のものは次のとおりです。

a$Transaction[a$type=="DEBIT"]=-a$Transaction

私は単純な非ループソリューションを探しています。そのようなソリューションはRに存在すると信じているからです。ありがとう、みんな!

4

2 に答える 2

4

私はこれを段階的に行い、インデックスベクトルを作成することを好みます。

R> ind <- a[,"type"] == "CREDIT"
R> ind
 [1]  TRUE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE  TRUE
R> a[ind, "Transaction"] <- - a[ind, "Transaction"]
R> a
   Transaction   type
1        -1.00 CREDIT
2         2.00  DEBIT
3         6.00  DEBIT
4         3.00  DEBIT
5         8.00  DEBIT
6        -3.00 CREDIT
7        -5.25 CREDIT
8        -6.99 CREDIT
9         2.00  DEBIT
10       -5.00 CREDIT
R> 
于 2013-01-13T00:44:14.480 に答える
3
a[a$type=="DEBIT",]$Transaction <- -a[a$type=="DEBIT",]$Transaction

あなたが探しているものです。データフレームの行を使用していることを指定するには、コンマが必要です。

于 2013-01-13T00:43:12.470 に答える