根据r中的另一个变量生成标记变量

时间:2020-02-11 22:02:34

标签: r recode

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

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

有什么想法吗? 谢谢!

1 个答案:

答案 0 :(得分:3)

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

+

或用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