dplyr包中的摘要:如何绕过`错误:需要单个值`

dplyr包中的摘要:如何绕过`错误:需要单个值`,r,dplyr,R,Dplyr,我想通过ID、药物、FED对DVID=1和DVID==2 df<- ID DRUG FED DVID CONC 1 1 1 1 20 1 1 1 2 40 2 2 0 1 30 2 2 0 2 100 当我使用mutate时,我没有得到错误。有没有办法绕过它,所以我在上面描述的案例中使用summary 输出基本上应该是这样的: ID DRUG FED SumCo

我想通过ID、药物、FED对
DVID=1
DVID==2

df<- 
ID  DRUG  FED  DVID  CONC
1    1     1    1     20
1    1     1    2     40
2    2     0    1     30
2    2     0    2     100
当我使用
mutate
时,我没有得到错误。有没有办法绕过它,所以我在上面描述的案例中使用
summary

输出基本上应该是这样的:

ID  DRUG  FED  SumConc
1    1     1    60
2    2     0    130

这似乎很简单:只需使用
sum()
,不要乱搞
lag()

获取数据:

df<- read.table(header=TRUE,
text="
ID  DRUG  FED  DVID  CONC
1    1     1    1     20
1    1     1    2     40
2    2     0    1     30
2    2     0    2     100
")

一种简单的基本R方法是使用
aggregate

aggregate(CONC ~ ID + DRUG + FED, df, sum)

#  ID DRUG FED CONC
#1  2    2   0  130   
#2  1    1   1   60

或来自
数据表

library(data.table)
setDT(df)[, .(SumConc = sum(CONC)), .(ID, DRUG, FED)]
#   ID DRUG FED SumConc
#1:  1    1   1      60
#2:  2    2   0     130

沿着同一条线。如何在代码
SumCOnc=CONC+lag(CONC)
中指定CONC的DVID?前面假设数据已经按照
ID、DRUG、FED
进行了排序,但情况可能并不总是如此。有没有一种方法可以为给定的“ID,FORM,FED”指定求和'CONC'?
library(dplyr)
df %>% 
  group_by(ID,DRUG,FED) %>% 
  summarise(SumConc=sum(CONC))

##      ID  DRUG   FED SumConc
## 1     1     1     1      60
## 2     2     2     0     130
aggregate(CONC ~ ID + DRUG + FED, df, sum)

#  ID DRUG FED CONC
#1  2    2   0  130   
#2  1    1   1   60
library(data.table)
setDT(df)[, .(SumConc = sum(CONC)), .(ID, DRUG, FED)]
#   ID DRUG FED SumConc
#1:  1    1   1      60
#2:  2    2   0     130