[英]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.