假设您有银行帐户信息:
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"))
行包括第一列中的美元金额以及是否已将其记入或添加到帐户中。我想基于第二行操纵第一行,如果是信用则保持积极,但如果它是借记则否定它。到目前为止,我提出的最好的是:
a$Transaction[a$type=="DEBIT"]=-a$Transaction
我正在寻找一个简单的非循环解决方案,因为我相信这样的解决方案存在于R.谢谢,伙计们!
答案 0 :(得分: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>
答案 1 :(得分:3)
a[a$type=="DEBIT",]$Transaction <- -a[a$type=="DEBIT",]$Transaction
您正在寻找什么。您需要逗号来指定您正在使用数据框行的事实。