gpt4 book ai didi

r - 通过组变量计算多个数值变量的百分比

转载 作者:行者123 更新时间:2023-12-04 12:07:10 24 4
gpt4 key购买 nike

我正在尝试根据 Image 中所示的唯一类别计算列的百分比。 enter image description here

正如我们在图像中看到的那样,Tag 是一列,Long 是另一列。所以这里我们要根据 Unique Tag No 计算 Long 列的百分比。在所有 Tag=1Long 列中的值的示例之一中,1004 是 0.42%544 是 0.22%545 是 0.22%282 是 0.11%1 是 Total 2376 的 0.00%。类似地,对于每个 Tag 和其他列(例如 MediumShortUrgent)的百分比计算都将完成。

df <- data.frame(Tag = c(1 ,1 ,1 ,1 ,1 ,2 ,2 ,2 ,2 ,2),
YPred = c("L1", "L2" ,"L3", "L4", "L5", "L1", "L2", "L3", "L4", "L5"),
Long = c(1004 , 544 , 545 , 282 , 1 ,2068 ,3006 ,3711 ,2342 , 33),
Medium = c(108, 252, 211, 149, 0, 17, 110, 248, 341, 4),
short = c(58, 118, 131, 73, 4, 0, 43, 150, 189,2),
Urgent = c(5, 70, 65, 24 , 5 ,22 ,18, 31 ,96, 2))

此处的预期输出是用颜色编写的图像输出。谢谢

最佳答案

这是处理任务的一种方法。您按 Tag 对数据进行分组。然后,您想对四列(即 LongMediumshortUrgent)。您将每组中的每个值除以 mutate_at() 中每组值的总和。

library(dplyr)

group_by(df, Tag) %>%
mutate_at(.vars = vars(Long:Urgent),
.funs = funs(. / sum(., na.rm = TRUE)))

# Tag YPred Long Medium short Urgent
# <dbl> <fctr> <dbl> <dbl> <dbl> <dbl>
# 1 1 L1 0.4225589226 0.150000000 0.151041667 0.02958580
# 2 1 L2 0.2289562290 0.350000000 0.307291667 0.41420118
# 3 1 L3 0.2293771044 0.293055556 0.341145833 0.38461538
# 4 1 L4 0.1186868687 0.206944444 0.190104167 0.14201183
# 5 1 L5 0.0004208754 0.000000000 0.010416667 0.02958580
# 6 2 L1 0.1853046595 0.023611111 0.000000000 0.13017751
# 7 2 L2 0.2693548387 0.152777778 0.111979167 0.10650888
# 8 2 L3 0.3325268817 0.344444444 0.390625000 0.18343195
# 9 2 L4 0.2098566308 0.473611111 0.492187500 0.56804734
#10 2 L5 0.0029569892 0.005555556 0.005208333 0.01183432

关于r - 通过组变量计算多个数值变量的百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47968302/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com