Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用dplyr计算一组行和目标行之间的差异?_R_Dplyr_Data Manipulation - Fatal编程技术网

如何使用dplyr计算一组行和目标行之间的差异?

如何使用dplyr计算一组行和目标行之间的差异?,r,dplyr,data-manipulation,R,Dplyr,Data Manipulation,我被一个数据操作问题困住了。基本上,我有一个包含两个因子列和一个响应变量的数据框,如下所示: set.seed(1234) df <- data.frame(ID = rep(1:10,each=4), Condition = factor(rep(c("A","B","C","D"),10)), Resp = runif(40,0,1)) 我想要完成的是创建一个新的列Resp_new,对于每个ID,它包括变量条

我被一个数据操作问题困住了。基本上,我有一个包含两个因子列和一个响应变量的数据框,如下所示:

set.seed(1234)
df <- data.frame(ID = rep(1:10,each=4),
                 Condition = factor(rep(c("A","B","C","D"),10)),
                     Resp = runif(40,0,1))
我想要完成的是创建一个新的列Resp_new,对于每个ID,它包括变量条件的级别a与其余级别B、C和D之间Resp的差异


我想用dplyr解决这个问题,因为它是我处理数据的主要工具,但如果能提供任何帮助,我将不胜感激。

如果数据集按照示例中的顺序排列,那么使用ave在base R中很容易做到这一点


如果您在这个极好的答案之后仍然想要dplyr:。df%>%mutaterespNew=aveResp,ID,FUN=functioni i-i[1]@thisisg或者,只需插入一个标记dplyr函数:df$respNew
df$respNew <- ave(df$Resp, df$ID, FUN=function(i) i - i[1])
 head(df)
  ID Condition      Resp    respNew
1  1         A 0.1137034  0.0000000
2  1         B 0.6222994  0.5085960
3  1         C 0.6092747  0.4955713
4  1         D 0.6233794  0.5096760
5  2         A 0.8609154  0.0000000
6  2         B 0.6403106 -0.2206048