我有一个名为df的 Dataframe (如下面的dput
所示):
group value
1 A 4
2 A 2
3 A 4
4 A 3
5 A 1
6 A 5
7 B 3
8 B 2
9 B 1
10 B 2
11 B 2
12 B 2
我想计算每组模式值的百分比。下面是计算每组模式值的代码:
# Mode function
mode <- function(codes){
which.max(tabulate(codes))
}
library(dplyr)
# Calculate mode per group
df %>%
group_by(group) %>%
mutate(mode_value = mode(value))
#> # A tibble: 12 × 3
#> # Groups: group [2]
#> group value mode_value
#> <chr> <dbl> <int>
#> 1 A 4 4
#> 2 A 2 4
#> 3 A 4 4
#> 4 A 3 4
#> 5 A 1 4
#> 6 A 5 4
#> 7 B 3 2
#> 8 B 2 2
#> 9 B 1 2
#> 10 B 2 2
#> 11 B 2 2
#> 12 B 2 2
创建于2022年11月28日,使用reprex v2.0.2
但我不确定如何计算每组模式值的百分比,应该如下所示:
group value mode_value perc_on_mode
1 A 4 4 0.33
2 A 2 4 0.33
3 A 4 4 0.33
4 A 3 4 0.33
5 A 1 4 0.33
6 A 5 4 0.33
7 B 3 2 0.67
8 B 2 2 0.67
9 B 1 2 0.67
10 B 2 2 0.67
11 B 2 2 0.67
12 B 2 2 0.67
所以我想知道是否有人知道如何计算每组众数的百分比?
df的dput
:
df <- structure(list(group = c("A", "A", "A", "A", "A", "A", "B", "B",
"B", "B", "B", "B"), value = c(4, 2, 4, 3, 1, 5, 3, 2, 1, 2,
2, 2)), class = "data.frame", row.names = c(NA, -12L))
2条答案
按热度按时间cbeh67ev1#
您可以尝试:
输出量:
mhd8tkvw2#
通过修改
mode
函数:或者用
data.table
表示: