繁体   English   中英

基于r中的另一个变量生成标记变量

[英]Generating a flagging variable based on another variable in r

我正在尝试生成一个标记变量。 这是我的示例数据集的样子:

data <- data.frame(
  ids = c(1,1,1, 2,2,2, 3,3,3),
  cat = c("A","B","B", "C","B","C", "A","B","A"))

> data
  ids cat
1   1   A
2   1   B
3   1   B
4   2   C
5   2   B
6   2   C
7   3   A
8   3   B
9   3   A

我需要一个标记变量标志的ids如果没有C每个观察id

 > data
      ids cat  flag
    1   1   A    0
    2   1   B    0
    3   1   B    0
    4   2   C    1
    5   2   B    1
    6   2   C    1
    7   3   A    0
    8   3   B    0
    9   3   A    0

有什么想法吗? 谢谢!

按 'ids' 分组后,通过检查 'C' 是否为%in% 'cat' 来创建 'flag',返回 TRUE/FALSE 的逻辑值,用as.integer+强制为 1/0

library(dplyr)
data %>%
     group_by(ids) %>%
     mutate(flag = +('C' %in% cat))
# A tibble: 9 x 3
# Groups:   ids [3]
#    ids cat    flag
#  <dbl> <fct> <int>
#1     1 A         0
#2     1 B         0
#3     1 B         0
#4     2 C         1
#5     2 B         1
#6     2 C         1
#7     3 A         0
#8     3 B         0
#9     3 A         0

或者用any包裹

  ... %>%
  mutate(flag = as.integer(any(cat %in% 'C')))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM