r - 在 R 中,每个 ID 的重复列值的平均数量是多少?
问题描述
背景
我有这个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)
它看起来像这样:
如您所见,它有 2 个不同ID
的 ',每个都有events
,其中一些重复 / 重复任意次数。
问题
我想弄清楚这个数据框中的平均重复次数event
是多少ID
。
乍一看,您会看到id
= a有2 个重复的事件 - G12,它重复两次(总共 3 个条目)和 B4,它重复一次(总共 2 个条目)。id
= b有1 个重复的事件:L5。请注意,每次重复/重复发生多少次与我无关;重要的是event
每个ID
.
所以我想要的结果是这个平均值的简单表格:
(2 个重复的事件 + 1 个重复的事件)/2 人 = 1.5
我试过的
多亏了这样的帖子,我已经有点接近了,但我并不完全在那里:
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
推荐阅读
- node.js - 如何为具有相同依赖项的多个 Angular 项目保留一个 node_modules 文件夹?
- r - R在将向量转换为字符向量以提交给API时保留字符串
- apache-kafka - 卡夫卡客户端和弹簧的奇怪行为
- android-studio - FAILURE:运行应用程序时构建失败并出现异常错误
- sql - 如何从数据库中访问三个表
- python - 你可以在 github 课堂自动评分中使用秘密测试吗?
- azure - Azure PowerShell 检索云经典证书
- c - 如何读取空格分隔的信息,包括一个可能有空格的字段?
- r - 将 Azure Databricks 中的非 SparkDataFrame 作为 .RData 保存到本地计算机
- c - 函数指针和另一种类型之间的转换 [MISRA 2012 规则 11.1,必需] | pclint 9074