【发布时间】:2015-02-26 19:35:15
【问题描述】:
我有一个数据框,我想使用唯一代码对不同 ID 内的百分比值进行有条件的减法/加法。
具体来说,我想将 10% 的代码 1% 值添加到代码 3% 的值,并从代码 1 中减去 10% 的代码 1% 值。其余代码保持不变。理想情况下,结果会添加到新列中。
我的问题与这两个相似,但有一些重要区别。 R ddply with multiple variables 和 Easiest way to subtract associated with one factor level from values associated with all other factor levels。
我认为最好的方法是 plyr,我已经有了,但是它不起作用。
df <- data.frame(id=c(rep("113316", 4), rep("113317", 3)), code=c(1,3,4,5,1,3,4), percent=c(0.2571, 0.7257, 0.0114, 0.0057, 0.9596, 0.0058, 0.0857))
df.2 <- ddply(df, .(id, code), transform, percent=(percent*.90[code==1]+percent[code==3] | percent=percent*.90[code==1]-percent[code==1]))
输出如下所示:
id code percent new
113316 1 0.2571 0.23139
113316 3 0.7257 0.75141
113316 4 0.0114 0.01140
113316 5 0.0057 0.00570
113317 1 0.9596 0.86364
113317 3 0.0058 0.10176
113317 4 0.0857 0.08570
【问题讨论】: