是否有方法为每组执行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因此,基本上,首先我们需要通过Start_num按Cat组的升序对数据进行排序,其次,我们需要创建另一列真假,它告诉第二行的Start_num是否大于第1行的End_num。示例第一行是True,因为对于,(4-3)是True,依此类推。但是每只猫的最后记录应该是NA的,因为它在那里结束。有可能取得成功吗?有谁可以帮我?
发布于 2021-01-22 13:44:14
下一个试试。您可以首先安排,然后使用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 https://stackoverflow.com/questions/65846227
复制相似问题