确定R中一列中的值是否在另一列中的值之前

oo7oh9g9  于 2023-07-31  发布在  其他
关注(0)|答案(2)|浏览(107)

如果在基于变量order的组中ED =1的示例位于surgery =1之前,我想创建一个新的列EDbeforesurgery
下面是我的dataframe的一个片段:

df <- data.frame(
  group = c(1, 1, 1, 2, 2, 3, 3),
  order = c(1, 2, 3, 1, 2, 1, 2),
  ED = c(1, 0, 0, 1, 1, 0, 0),
  surgery = c(0, 0, 1, 0, 0, 0, 1))

字符串
因此,group 1、2、3的理想输出分别为YNN

fkvaft9z

fkvaft9z1#

您可以尝试:

library(dplyr)

df %>%
  mutate(EDbeforesurgery = any(cummax(ED) > cummax(surgery)) && any(surgery == 1L), .by = group)

  group order ED surgery EDbeforesurgery
1     1     1  1       0            TRUE
2     1     2  0       0            TRUE
3     1     3  0       1            TRUE
4     2     1  1       0           FALSE
5     2     2  1       0           FALSE
6     3     1  0       0           FALSE
7     3     2  0       1           FALSE

字符串

2guxujil

2guxujil2#

您可以尝试这个dplyr选项:

library(dplyr)

df %>%
  group_by(group) %>%
  mutate(EDbeforesurgery = isTRUE(first(order[ED == 1]) < first(order[surgery == 1]))) %>%
  ungroup()

#   group order ED surgery EDbeforesurgery
# 1     1     1  1       0            TRUE
# 2     1     2  0       0            TRUE
# 3     1     3  0       1            TRUE
# 4     2     1  1       0           FALSE
# 5     2     2  1       0           FALSE
# 6     3     1  0       0           FALSE
# 7     3     2  0       1           FALSE

字符串

相关问题