从其他列减去一个列中的金额的连续条件

时间:2018-07-31 15:58:03

标签: r loops if-statement logic subtraction

我的df如下。我想使用以下规则从其他列中减去col d

  • 没有结果可以是负面的
  • 如果d可以均分并从a:c减去而不产生负数,则在cols上减去等量
  • 否则,如果可以将d除以b:c并除以a的余数而又不产生负数,则从cols减去
  • 否则,如果可以从d中减去c,从b中减去余数,然后从a中减去其后的余数而不会产生负数,则从cols < / li>
  • 否则,如果可以从d中减去b而从a中减去余数而不产生负数,则从cols减去
  • 否则,从a中减去

df:

structure(list(a = c(0, 6.22, 1.2, 0.22, 0.24), b = c(8.88, 1.08, 
0.25, 0, 0), c = c(13.76, 0, 19.61, 0, 0), d = c(-2.64, -0.3, 
-11.06, -0.22, -0.24)), .Names = c("a", "b", "c", "d"), row.names = c(NA, 
-5L), class = c("tbl_df", "tbl", "data.frame"), spec = structure(list(
    cols = structure(list(a = structure(list(), class = c("collector_double", 
    "collector")), b = structure(list(), class = c("collector_double", 
    "collector")), c = structure(list(), class = c("collector_double", 
    "collector")), d = structure(list(), class = c("collector_double", 
    "collector"))), .Names = c("a", "b", "c", "d")), default = structure(list(), class = c("collector_guess", 
    "collector"))), .Names = c("cols", "default"), class = "col_spec"))

起始表格:

a     b     c      d
0     8.88  13.76  -2.64
6.22  1.08  0      -0.3
1.2   0.25  19.61  -11.06
0.22  0     0      -0.22
0.24  0     0      -0.24

所需结果:

a     b     c      d
0     7.56  12.44  -2.64
6.22  0.78  0      -0.3
1.2   0.25  8.55   -11.06
0     0     0      -0.22
0     0     0      -0.24

0 个答案:

没有答案