标记 R 数据框中组内的缺失类别
flag missing categories within a group in an R dataframe
当 score
变量缺少该项目 0
和 max.score
之间的任何分数时,我想标记 itemid
。这是一个示例数据集。
df <- data.frame(id = c(1,2,3, 1,2,3, 1,2,3, 1,2,3, 1,2,3),
itemid = c(11,11,11, 12,12,12, 13,13,13, 14,14,14, 15,15,15),
score = c(0,1,2, 1,2,2, 0,1,1, 2,0,0, 1,1,1),
max.points = c(2,2,2, 2,2,2, 1,1,1, 2,2,2, 1,1,1 ))
> df
id itemid score max.points
1 1 11 0 2
2 2 11 1 2
3 3 11 2 2
4 1 12 1 2
5 2 12 2 2
6 3 12 2 2
7 1 13 0 1
8 2 13 1 1
9 3 13 1 1
10 1 14 2 2
11 2 14 0 2
12 3 14 0 2
13 1 15 1 1
14 2 15 1 1
15 3 15 1 1
在这种情况下,itemid=12
缺少 0
的 score
,itemid=14
缺少 1
的 score
,并且 itemid=15
缺少 0
的 score
。
关于如何标记项目 12,14 和 15 有什么想法吗?
谢谢!
按'itemid'分组,通过检查max.points
(从0开始)的序列all
是否为%in%
[=22来创建flag
=] 并否定 (!
)
library(dplyr)
df %>%
group_by(itemid) %>%
mutate(flag = !all(c(0, seq_len(first(max.points))) %in% score)) %>%
ungroup
-输出
# A tibble: 15 × 5
id itemid score max.points flag
<dbl> <dbl> <dbl> <dbl> <lgl>
1 1 11 0 2 FALSE
2 2 11 1 2 FALSE
3 3 11 2 2 FALSE
4 1 12 1 2 TRUE
5 2 12 2 2 TRUE
6 3 12 2 2 TRUE
7 1 13 0 1 FALSE
8 2 13 1 1 FALSE
9 3 13 1 1 FALSE
10 1 14 2 2 TRUE
11 2 14 0 2 TRUE
12 3 14 0 2 TRUE
13 1 15 1 1 TRUE
14 2 15 1 1 TRUE
15 3 15 1 1 TRUE
当 score
变量缺少该项目 0
和 max.score
之间的任何分数时,我想标记 itemid
。这是一个示例数据集。
df <- data.frame(id = c(1,2,3, 1,2,3, 1,2,3, 1,2,3, 1,2,3),
itemid = c(11,11,11, 12,12,12, 13,13,13, 14,14,14, 15,15,15),
score = c(0,1,2, 1,2,2, 0,1,1, 2,0,0, 1,1,1),
max.points = c(2,2,2, 2,2,2, 1,1,1, 2,2,2, 1,1,1 ))
> df
id itemid score max.points
1 1 11 0 2
2 2 11 1 2
3 3 11 2 2
4 1 12 1 2
5 2 12 2 2
6 3 12 2 2
7 1 13 0 1
8 2 13 1 1
9 3 13 1 1
10 1 14 2 2
11 2 14 0 2
12 3 14 0 2
13 1 15 1 1
14 2 15 1 1
15 3 15 1 1
在这种情况下,itemid=12
缺少 0
的 score
,itemid=14
缺少 1
的 score
,并且 itemid=15
缺少 0
的 score
。
关于如何标记项目 12,14 和 15 有什么想法吗?
谢谢!
按'itemid'分组,通过检查max.points
(从0开始)的序列all
是否为%in%
[=22来创建flag
=] 并否定 (!
)
library(dplyr)
df %>%
group_by(itemid) %>%
mutate(flag = !all(c(0, seq_len(first(max.points))) %in% score)) %>%
ungroup
-输出
# A tibble: 15 × 5
id itemid score max.points flag
<dbl> <dbl> <dbl> <dbl> <lgl>
1 1 11 0 2 FALSE
2 2 11 1 2 FALSE
3 3 11 2 2 FALSE
4 1 12 1 2 TRUE
5 2 12 2 2 TRUE
6 3 12 2 2 TRUE
7 1 13 0 1 FALSE
8 2 13 1 1 FALSE
9 3 13 1 1 FALSE
10 1 14 2 2 TRUE
11 2 14 0 2 TRUE
12 3 14 0 2 TRUE
13 1 15 1 1 TRUE
14 2 15 1 1 TRUE
15 3 15 1 1 TRUE