我想通过ID,DRUG,FED总结CONC
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
我试过用这个:
df2 <- df %>%
group_by(ID,DRUG,FED) %>%
summarise(SumCOnc=CONC+lag(CONC))
但是我收到了这个错误:
Error: expecting a single value
使用mutate
时,我没有收到错误消息。有没有办法绕过它,所以我在上述情况下使用summarise
?
输出基本上应该是这样的:
ID DRUG FED SumConc
1 1 1 60
2 2 0 130
答案 0 :(得分:6)
这看起来很简单:只使用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
")
过程:
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
答案 1 :(得分:4)
简单的Base R方法将使用SELECT order_id, SUM(value) AS Total
FROM your_table
WHERE code = "shipping"
GROUP BY order_id
aggregate
答案 2 :(得分:4)
或来自data.table
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