是否可以对每个组执行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] 删除。
我来说两句