【发布时间】:2012-01-31 17:35:35
【问题描述】:
我已经使用 apply 搜索了很长时间的解决方案,但我无法准确找到我需要的解决方案。我是从 Excel 过来的新 R 用户,需要计算与控件观察的百分比差异。一个真实的示例数据框如下所示:
site <- c(rep(1, 10), rep(2,10), rep(3,10))
element <-rep(c("ca", "Mg", "K"), 10)
control <- seq(from= 1,to=60, by=2)
BA01 <- seq(from= 31,to=90, by=2)
BA02 <- seq(from= 21,to=80, by=2)
BA03 <- seq(from= 101,to=160, by=2)
mydf <- data.frame(site, element, control, BA01, BA02,BA03)
其中 BA01 到 BA03 是不同的测试,将与对照进行比较。
我想做的就是制定一个这样的公式: ((BA01-control)/control)*100
并为每个测试列(BA01-BA03)和数据框中的每一行计算它。在 Excel 中,我可以复制并粘贴站点和元素列以及标题 BA01-BA03,在单元格 C2 中键入公式,然后根据需要将公式向右拖动,然后根据需要向下拖动并得到我的结果。在 R 中,我很难获得相同的结果。我已经尝试过申请,但无法使其正常工作。基本上,我希望将站点和元素作为第 1 列和第 2 列,然后是公式的结果,其中 BA01、BA02 和 BA03 作为列名。可能不会有什么不同,但我的真实数据框将有超过 130 列和数千行。
有人给我一些建议吗?
非常感谢您的帮助。
丹
【问题讨论】: