>>> "GM" == Greg Minshall writes: Greg > 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. :) Thanks but I have to disappoint you the correct result should be 10.1 > 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? yes > - is that the "DMNI H" column? That is 0.2 > - is that the "User1" row? No, it is the weight 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 Thanks I will play around a bit, but for the moment I think I have to stick with calc Uwe