标记 R 数据框中组内缺失的类别

发布于 2025-01-09 17:08:55 字数 1161 浏览 0 评论 0原文

score 变量缺少 0max.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 缺少 score of 0itemid=14 缺少 score of 1 ,并且 itemid=15 缺少 score of 0

关于如何标记第 12,14 和 15 项有什么想法吗?

谢谢!

I would like to flag itemid when the score variable is missing any score between 0 and max.score of that item. Here is an example dataset.

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

In this case, itemid=12 is missing score of 0, itemid=14 is missing score of 1, and itemid=15 is missing score of 0 .

Any ideas on how to flag items 12,14 and 15?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

陌若浮生 2025-01-16 17:08:55

按“itemid”分组,通过检查 max.points 序列(从 0 开始)的 all 是否为 % 来创建 flag in% '分数' 并求反 (!)

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 

Grouped by 'itemid', create the flag by checking if all of the sequence of max.points (from 0) are %in% 'score' and negate (!)

library(dplyr)
df %>%
  group_by(itemid) %>%
  mutate(flag = !all(c(0, seq_len(first(max.points))) %in% score)) %>%
  ungroup

-output

# 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 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文