R 使用带模式的行计算值

R 使用带模式的行计算值,r,dataframe,dplyr,tidyr,R,Dataframe,Dplyr,Tidyr,我有这些投入: df 但它没有帮助,如何按模式比较行?有什么想法吗?这里有一个dplyr解决方案 library(dplyr) df %>% mutate(Task = substr(Task, 1, 10)) %>% group_by(Task) %>% mutate(Diff = abs(Frame - lead(Frame))) 数据。 df 6和16的差值如何等于6(第一个差值)?32和74等于24(第三个差异)? Task

我有这些投入: df


但它没有帮助,如何按模式比较行?有什么想法吗?

这里有一个
dplyr
解决方案

library(dplyr)

df %>%
  mutate(Task = substr(Task, 1, 10)) %>%
  group_by(Task) %>%
  mutate(Diff = abs(Frame - lead(Frame)))

数据。
df 6和16的差值如何等于6(第一个差值)?32和74等于24(第三个差异)?
  Task              Frame  Diff
   <chr>             <int> <int>
 1 S101-10061            6     6
 2 S101-10061-74716     16    
 3 S101-10065           18     2
 4 S101-10065-104934    16     
 5 S101-10071           32    24
 6 S101-10071-104898    74    
 7 S101-10072            8    50
 8 S101-10072-79124     58    
 9 S101-10074           38    
10 S101-10075           82    
df %>% mutate(
    Diff = accumulate(
    Frame[1:n()], function(x,y)(abs(x-y))
                        )
    )
library(dplyr)

df %>%
  mutate(Task = substr(Task, 1, 10)) %>%
  group_by(Task) %>%
  mutate(Diff = abs(Frame - lead(Frame)))
df <-
structure(list(Task = c("S101-10061", "S101-10061-74716", "S101-10065", 
"S101-10065-104934", "S101-10071", "S101-10071-104898", "S101-10072", 
"S101-10072-79124", "S101-10074", "S101-10075"), Frame = c(6L, 
16L, 18L, 16L, 32L, 74L, 8L, 58L, 38L, 82L)), class = "data.frame", 
row.names = c("1", "2", "3", "4", "5", "6", "7", "8", "9", "10"))