r - 在 R 中,每个 ID 重复列值的平均数量是多少?

标签 r dplyr duplicates

背景
我有这个 R数据框,d :

d <- data.frame(ID = c("a","a","a","a","a","a","b","b"),
                event = c("G12","G12","G12","B4","B4","A24","L5","L5"),
                stringsAsFactors=FALSE)
它看起来像这样:
d
如您所见,它有 2 个不同的 ID就在里面,每个都有 events ,其中一些重复/重复任意次数。
问题
我想弄清楚平均重复次数是多少 event是每 ID在这个数据框中。
一眼就能看出id = a 有 2 重复的事件 - G12,重复两次(总共 3 个条目)和 B4,重复一次(总共 2 个条目)。 id = b 有 1 重复的事件:L5。请注意,每次重复/重复发生的次数与我在这里无关;重要的是至少有一个重复 eventID .
所以我想要的结果是一个简单的平均值列表:
( 2 重复事件 + 1 重复事件)/2 人 = 1.5
我试过的
由于 this 之类的帖子,我已经接近了,但我不完全在那里:
d %>% summarise(mean = mean(duplicated(event)))
这会运行,但它不考虑重复发生在 ID 内的事实。 (或者至少,我是这么看的)。

最佳答案

这是你想要的吗?

d %>%
  group_by(event , ID) %>%
  dplyr::summarise(n = n()) %>%
  filter(n > 1) %>%
  group_by(ID) %>%
  dplyr::summarise(n = n()) %>%
  summarise(result = mean(n))

  result
1    1.5
d
  ID event
1   Bill     1
2   Bill     1
3   Bill     2
4   Bill     2
5   Bill     3
6   Bill     3
7   Bill     4
8   Bill     4
9  Sarah     1
10 Sarah     1
11 Sarah     2
12 Sarah     2
13 Sarah     3
14 Sarah     3
15 Sarah     4
16 Sarah     4
17 Sarah     5
18 Sarah     5
19  Jane     1
20  Jane     1

    result
1 3.333333
对代码的小检查
d %>%
  group_by(event , ID) %>%
  dplyr::summarise(n = n()) %>%
  filter(n > 1) %>%
  group_by(ID) %>%
  dplyr::summarise(n = n())

  ID        n
  <chr> <int>
1 Bill      4
2 Jane      1
3 Sarah     5

关于r - 在 R 中,每个 ID 重复列值的平均数量是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69400955/

相关文章:

r - 在 R 中使用 str_detect() 检测整个单词

r - 将组副标题和小计行添加到 R 中的 data.frame 或表

python - pandas 和 python 中的重复数据删除和转置列数据

Pythonic 方式在列表中查找重复映射,同时忽略某些键,然后组合重复映射以创建新列表

r - `venneuler` 中的维恩图 `R` : delete the name of the set from the plot and add elements name

r - 如何在r中合并两个具有多个相同ID的数据框

R - 通过匹配名称将 lapply 输出与数据帧列表绑定(bind)

r - dplyr mutate 抛出 "Error: invalid subscript type ' 闭包'"错误

r - Dplyr:同时汇总组和整个数据

php - 无法捕获重复项