Uwe, well, *i* no longer remember how to read calc-like expressions. and, i'm a notoriously poor R coders. assuredly the following is not doing what you want, but possibly you'll get the idea. (if 102.01 is, indeed, the correct answer, feel free to buy me a hot fudge sundae some day. :)
cheers, Greg #+name: thing | / | <> | <> | <> | <> | <> | <> | <> | | | | DMI G | DMNI H | ExNDM I | ExNDNM J | Result | Weight2 | | | Weight: | 1 | 0.2 | 1 | 0.1 | | 0.1 | |---+---------+-------+--------+---------+----------+--------+---------| | | User1 | 0 | 0 | 11 | 0 | 10.1 | | |---+---------+-------+--------+---------+----------+--------+---------| #+TBLFM: $7=if($3>10,($3-10)*@3$8,0)+ min(10,$3)*@3$3+ min(10,$4)*@3$4 + if($5>10,($5-10)*@3$8,0)+min(10,$5)*@3$5 +@3$6*$6;f1:: - does "@3$3" mean the third column in the third row? - is that the "DMNI H" column? - is that the "User1" row? i replace "@3" with the last row of the input table. #+begin_src R :var some=thing :session R :colnames yes ## in imported colnames, spaces are replaced with periods some[,"Result"] <- ifelse(some[,"DMNI.H"] > 10, (some[, "DMNI.H"] - 10.0) * (some[nrow(some), "Weight2"]), 0.0) + (min(10, some[, "DMNI.H"]) * some[nrow(some), "ExNDM.I"]) + (ifelse(some[, "ExNDNM.J"] > 10, some[, "ExNDNM.J"] - 10 * some[nrow(some), "DMNI.H"], 0)) + (min(10, some[, "ExNDNM.J"]) * some[nrow(some), "ExNDNM.J"]) + (some[nrow(some), "Result"] * some[, "Result"]) #+end_src #+RESULTS: | x | |--------| | | | 102.01 |