dplyr包中的摘要:如何绕过`错误:需要单个值`
我想通过ID、药物、FED对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
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