我经常尝试在两个不同的场景/测试/期间测量百分比变化。
一个示例数据集:
library(dplyr)
set.seed(11)
toy_dat <- data.frame(state = sample(state.name,3, replace=F),
experiment=c('control','measure'),
accuracy=sample(30:50, size=6, replace=T),
speed=sample(21:39, size=6, replace=T)) %>% arrange(state)
state experiment accuracy speed
1 Alabama measure 31 24
2 Alabama control 36 37
3 Indiana control 30 23
4 Indiana measure 31 38
5 Missouri control 50 29
6 Missouri measure 48 34
然后我求助于写一些像这样可怕的东西:
result <- toy_dat %>% group_by(state) %>% arrange(experiment) %>%
summarise(acc_delta = (accuracy[2]-accuracy[1])/accuracy[1],
speed_delta = (speed[2]-speed[1])/speed[1])
但是,当可测量的数量开始增长时,上述解决方案根本无法扩展。此外,代码在排序方面非常脆弱。
我对 R 很陌生。我希望这是一种足够普遍的模式,以便有众所周知的(更智能的)解决方案来解决这个问题。
我将不胜感激任何帮助/指针。