背景
我有这个 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
我试过的
由于 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/