总结一下dplyr包:如何解决`错误:期待单个值`

时间:2016-05-31 03:07:13

标签: r dplyr

我想通过ID,DRUG,FED总结CONC DVID =1DVID==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

3 个答案:

答案 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