r - 计算与 R 数据框中特定因素相关的值

标签 r dataframe

我在 R 中有一个以下形式的数据框:

        BC solvopt istrng tSolv      EPB
    1   10       1      0  0.10 -78.1450
    2   10       1      1  0.15 -78.7174
    3   10       1     10  0.14 -78.7175
    4   10       1    100  0.12 -78.7184
    5   10       1   1000  0.09 -78.7232
    6   10       1      2  0.15 -78.7175
    7   10       1     20  0.14 -78.7176
    8   10       1    200  0.12 -78.7192
    30  10       2      0  0.10 -78.1450
    31  10       2      1  0.11 -78.7174
    32  10       2     10  0.11 -78.7175
    33  10       2    100  0.10 -78.7184
    34  10       2   1000  0.13 -78.7232
    35  10       2      2  0.11 -78.7174
    36  10       2     20  0.10 -78.7176
    37  10       2    200  0.10 -78.7192
    59  10       3      0  0.16 -78.1450
    60  10       3      1  0.23 -78.7174
    61  10       3     10  0.21 -78.7175
    62  10       3    100  0.19 -78.7184
    63  10       3   1000  0.17 -78.7232
    64  10       3      2  0.22 -78.7175
    65  10       3     20  0.21 -78.7176
    66  10       3    200  0.18 -78.7192
    88  10       4      0  0.44 -78.1450
    89  10       4      1 14.48 -78.7162
    90  10       4     10 12.27 -78.7175
    91  10       4    100  1.23 -78.7184
    92  10       4   1000  0.44 -78.7232
    93  10       4      2 14.52 -78.7172
    94  10       4     20  6.16 -78.7176
    95  10       4    200  0.62 -78.7192

我想在此框架中添加一列,该列显示 EPB 中 BC 和 istrng 的每个值相对于 solvopt=3 的相对误差。

例如,要计算每行 EPB 的相对差异,我将减去具有相同 BC 和 istrng 值但 solvopt=3 的相应行的 EPB 值。

有没有一种简单的方法可以做到这一点,只需将其分成多个数据帧(针对每个求解器),然后重新组合在一起?

最终目标是使用 qplot 为 BC 的每个值生成相对误差与 istrng 的关系图。

最佳答案

如果您将 solvopt==3 的子集与 BCistrong 上的主要数据进行合并 ,然后减去差值,您应该得到您想要的结果,例如:

newdat <- merge(dat,dat[dat$solvopt==3,c("BC","istrng","EPB")], by=c("BC","istrng"))
newdat$diff <- with(newdat, EPB.x - EPB.y)

...或者使用匹配交互一次性完成所有操作:

dat$diff <- dat$EPB - dat[dat$solvopt==3,"EPB"][match(
  with(dat,                  interaction(BC,istrng) ),
  with(dat[dat$solvopt==3,], interaction(BC,istrng) ) 
)]

关于r - 计算与 R 数据框中特定因素相关的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29811187/

相关文章:

r - 比较每个组内变量的每个元素

Python 日期工具 : Unable to calculate age from two dates (relativedelta)

python - 确定谁拥有超过 80% 的给定发货人

python-2.7 - 以文件名作为列标题将多个 *.txt 文件读入 Pandas Dataframe

html - Rmarkdown HTML 渲染问题

r - 依赖项 ‘Rglpk’ 不可用于程序包 ‘fPortfolio’

r - 需要一种方法来立即重新加载 session ,而无需完成 Shiny 中的代码序列

r - 将 R 数据帧转换为 JSON,同时将每一行分隔为一个新的 JSON 对象

python - 日期之间的差异 - 整数结果

r - 无法编译 RcppArmadillo