R 每个子组的备用行中存在相同的差异

R 每个子组的备用行中存在相同的差异,r,dplyr,row,difference,alternate,R,Dplyr,Row,Difference,Alternate,我有数据框,需要找出差异,但对于每一个备用行,差异应保持不变,因为要做的事情如下所示: 但我用过这个: things <- data.frame( category = c("A","B","A","B","A","B","A","B","A","B"), things2do = c("ball","ball","bat","bat","hockey","hockey","volley ball","volley ball","foos bal

我有数据框,需要找出差异,但对于每一个备用行,差异应保持不变,因为要做的事情如下所示:

但我用过这个:

things <- data.frame( category = c("A","B","A","B","A","B","A","B","A","B"),
                      things2do = c("ball","ball","bat","bat","hockey","hockey","volley ball","volley ball","foos ball","foos ball"),
                      number = c(12,5,4,1,0,2,2,0,0,2))


    things %>% 
      mutate(diff = number - lead(number,order_by=things2do))
事物%
变异(差异=数量-领先(数量、顺序=事物2DO))
但这并没有什么帮助,因为我明白了:

我可以在这里得到一些帮助吗?

库(tidyverse)
library(tidyverse)

things2 <- things %>%
  spread(category, number) %>%
  mutate(diff = B - A) %>%
  gather(category, number, A:B) %>%
  select(category, things2do, number, diff) %>%
  arrange(things2do)
东西2% 价差(类别、数量)%>% 变异(差异=B-A)%>% 聚集(类别、编号、A:B)%>% 选择(类别、任务、数量、差异)%>% 安排(要做的事)
一种方法是通过
things2do
对数据进行分组,然后进行迭代差分

library(dplyr)
things %>% 
  group_by(things2do) %>%
  mutate(diff = diff(number))

谢谢只是根据指导原则进行了编辑。仅针对此示例数据,您可以执行:
group_by(things,things2do)%%>%mutate(difference=diff(number))
@jazzuro,这不起作用,因为您的方法给出了连续数字之间的差异。