我正在尝试生成标记变量。这是我的样本数据集的样子:
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
有什么想法吗? 谢谢!
答案 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