首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用tidyverse查找基本模型运行与所有其他模型的差异。

使用tidyverse查找基本模型运行与所有其他模型的差异。
EN

Stack Overflow用户
提问于 2018-03-07 21:43:11
回答 2查看 76关注 0票数 1

我的数据如下所示:

代码语言:javascript
复制
dat <- data.frame(Model = rep(c("OM", "EM-1", "EM-2", "EM-3"), each = 3),
              Run = rep(c(1,2,3), time=4),
              Value = c(2,10,5,20,26,7,8,15,33,11,31,7))

在这个例子中,我有来自多个模型的值,每个模型运行3次。"OM“模型是基本的情况,我想把所有的东西都拿回来比较。

我想,使用tidyverse,计算一个新的值,这将是每个模型运行与其相应的"OM“模型运行之间的差异。我想我已经接近了:

代码语言:javascript
复制
library(tidyverse)
 x <- dat %>%
      group_by(Run)  %>%
      filter(!is.na(Value)) %>%
      mutate(Diff = c(NA, diff(Value)))

计算后续模型运行之间的差异,但我不知道如何使所有这些计算都与"OM“模型相关,而不是之前的模型。我知道我可以通过对我的数据进行细分和这样的计算来做到这一点,但是我正试图用整齐的方式来做,因为随着时间的推移,我会有很多不同的模型,而且我不希望所有的模型都被子集来运行计算。

提前谢谢你的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-08 01:47:17

在按“Run”进行分组后,我们在mutate中将“值”(其中的“模型”)子集为“OM”,并从“OM”中减去“OM”,并在mutate中追加“OM”(对应于“OM”与自身差异的“值”差)。

代码语言:javascript
复制
library(dplyr)
dat %>% 
   group_by(Run) %>%
   mutate(Diff = c(NA, Value[Model!= "OM"] - Value[Model == "OM"]))
# A tibble: 12 x 4
# Groups: Run [3]
#   Model    Run Value  Diff
#   <fctr> <dbl> <dbl> <dbl>
# 1 OM      1.00  2.00 NA   
# 2 OM      2.00 10.0  NA   
# 3 OM      3.00  5.00 NA   
# 4 EM-1    1.00 20.0  18.0 
# 5 EM-1    2.00 26.0  16.0 
# 6 EM-1    3.00  7.00  2.00
# 7 EM-2    1.00  8.00  6.00
# 8 EM-2    2.00 15.0   5.00
# 9 EM-2    3.00 33.0  28.0 
#10 EM-3    1.00 11.0   9.00
#11 EM-3    2.00 31.0  21.0 
#12 EM-3    3.00  7.00  2.00
票数 2
EN

Stack Overflow用户

发布于 2018-03-07 22:18:58

代码语言:javascript
复制
library(tidyverse)
dat %>% 
 spread(Model, Value) %>% 
 gather(Model, Value, -Run, -OM) %>% 
 mutate(Diff = Value - OM)
#  Run OM Model Value Diff
#1   1  2  EM-1    20   18
#2   2 10  EM-1    26   16
#3   3  5  EM-1     7    2
#4   1  2  EM-2     8    6
#5   2 10  EM-2    15    5
#6   3  5  EM-2    33   28
#7   1  2  EM-3    11    9
#8   2 10  EM-3    31   21
#9   3  5  EM-3     7    2
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49161709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档