R中按组的滞后差异

生活

是否可以对每个组执行2个操作。示例如下

> asd <- data.frame(Cat = c("A","B","B","A","B","A"), Start_num = c(2, 5, 1, 6, 6, 4), End_num = c(3, 7, 4, 7, 8, 5))
> asd
  Cat Start_num End_num
1   A         2       3
2   B         5       7
3   B         1       4
4   A         6       7
5   B         6       8
6   A         4       5

预期产量

Cat Start_num   End_num   True/False
A       2        3        TRUE
A       4        5        TRUE
A       6        7        NA
B       1        4        TRUE
B       5        7        FALSE
B       6        8        NA

因此,基本上,首先,我们需要按组Cat的升序对数据帧进行升序排序;其次,我们需要创建另一个True / False,以告知第二行的Start_num是否大于第一行的End_num。示例第一行为True,因为A(4-3)为True,依此类推。但是每只Cat的最后一条记录应该是NA,因为它到此为止。有可能实现吗?谁能帮我?

再试一下 您可以先进行安排,然后使用lead()进行比较并达到预期的输出:

library(dplyr)
#Code
new <- asd %>% arrange(Cat,Start_num) %>%
  group_by(Cat) %>%
  mutate(Var=lead(Start_num)>End_num)

输出:

# A tibble: 6 x 4
# Groups:   Cat [2]
  Cat   Start_num End_num Var  
  <chr>     <dbl>   <dbl> <lgl>
1 A             2       3 TRUE 
2 A             4       5 TRUE 
3 A             6       7 NA   
4 B             1       4 TRUE 
5 B             5       7 FALSE
6 B             6       8 NA   

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章