如何使用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