正如我们在图片中看到Tag
是一列而Long
是另一列。所以,我们希望Long
列的百分比计算基于Unique Tag No
。其中一个示例适用于所有Tag=1
以及Long
列1004 is 0.42%
和544 is 0.22%
以及545 is 0.22%
和282 is 0.11%
以及{{1}中的值1 is 0.00%
2376。类似地,对于其他列的Total
和百分比计算,例如Tag
,Medium
,Short
将完成。
Urgent
此处预期输出是用Color编写的图像输出。谢谢
答案 0 :(得分:6)
这是处理任务的一种方法。您按Tag
对数据进行分组。然后,您要对四列进行计算(即Long
,Medium
,short
和Urgent
)。您将每组中的每个值除以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