【发布时间】:2018-08-21 21:39:54
【问题描述】:
我有一个数据框,其中包含几列可能的目标值(在我的示例中,下面的 value 和 value2)和一些带有预测值的列。这些列都以“predMod”开头。现在我想计算所有“predMod”列之间的差异,我的目标变量值。
例子:
target = "value2"
date value value2 predModLM1 predModLM2
1 2015-07-01 NA 5 3.236827 3.291434
2 2015-07-02 NA 5 3.236827 3.291434
3 2015-07-03 NA 5 3.236827 3.291434
4 2015-07-04 NA 5 3.236827 3.291434
5 2015-07-05 NA 5 3.236827 3.291434
6 2015-07-06 3.4 5 3.236827 3.291434
7 2015-07-07 3.4 5 3.236827 3.291434
8 2015-07-08 3.4 5 3.236827 3.291434
9 2015-07-09 3.4 5 3.236827 3.291434
10 2015-07-10 3.4 5 3.236827 3.291434
现在应该计算以“predMod”开头的每一列与来自目标的“value2”列之间的差异。
我可以通过:
results <- data %>%
select(date, target, contains("predMod")) %>%
mutate_at(. , vars(-c(date, target)), funs(residuals = . - value2))
结果:
date value2 predModLM1 predModLM2 predModLM1_residuals predModLM2_residuals
1 2015-07-01 5 3.236827 3.291434 -1.763173 -1.708566
2 2015-07-02 5 3.236827 3.291434 -1.763173 -1.708566
3 2015-07-03 5 3.236827 3.291434 -1.763173 -1.708566
4 2015-07-04 5 3.236827 3.291434 -1.763173 -1.708566
5 2015-07-05 5 3.236827 3.291434 -1.763173 -1.708566
6 2015-07-06 5 3.236827 3.291434 -1.763173 -1.708566
7 2015-07-07 5 3.236827 3.291434 -1.763173 -1.708566
8 2015-07-08 5 3.236827 3.291434 -1.763173 -1.708566
9 2015-07-09 5 3.236827 3.291434 -1.763173 -1.708566
10 2015-07-10 5 3.236827 3.291434 -1.763173 -1.708566
但在我的解决方案中,它硬编码在 funs (-> funs(residuals = . - value2) 中。如果我将 value2 更改为 target (-> funs(residuals = . - target),则整个事情都不起作用。 .. 我该如何解决这个问题?
一个想法是用位置参数替换 value2。目标值总是像这样在第 2 列中。但我失败了:-(
提前非常感谢, 马可
【问题讨论】: