如何在dplyr中为组内的所有行填充二进制结果

  • 本文关键字:填充 结果 二进制 dplyr r
  • 更新时间 :
  • 英文 :


我正试图使用group_by()创建一个新变量,该变量根据条件(两个条件(指定1或0。如果条件满足一次,我想将1分配给组中的所有行,如果根本不满足,则将0分配给组。下面的代码在满足条件的单行指定1。如何调整它以填充分组变量中的所有行?

library(tidyverse)
set.seed(10)
dat <- data.frame(
group = rep(c("Group1", "Group2"), each = 18),
d_num = rep(c(1:6), times = 2, each = 3),
var1 = sample(1:4, 36, replace = TRUE),
var2 = sample(1:4, 36, replace = TRUE)
)
x <- dat %>%
group_by(group, d_num) %>%
mutate(var3 = ifelse(var1 == 1 | var2 == 1, 1, 0))

any():中包装您的条件

library(tidyverse)
x <- dat %>%
group_by(group, d_num) %>%
mutate(var3 = ifelse(any(var1 == 1 | var2 == 1), 1, 0))

print(x, n = 20)

输出:

# A tibble: 36 × 5
# Groups:   group, d_num [12]
group  d_num  var1  var2  var3
<chr>  <int> <int> <int> <dbl>
1 Group1     1     3     2     1
2 Group1     1     1     1     1
3 Group1     1     2     2     1
4 Group1     2     4     1     1
5 Group1     2     4     3     1
6 Group1     2     3     2     1
7 Group1     3     4     2     1
8 Group1     3     2     2     1
9 Group1     3     3     1     1
10 Group1     4     3     4     1
11 Group1     4     3     1     1
12 Group1     4     4     2     1
13 Group1     5     3     4     0
14 Group1     5     3     3     0
15 Group1     5     2     2     0
16 Group1     6     3     3     0
17 Group1     6     2     2     0
18 Group1     6     2     4     0
19 Group2     1     4     3     1
20 Group2     1     1     3     1
# … with 16 more rows

最新更新