gpt4 book ai didi

r - 将数据标准化为 100%,但总值小于 1.00

转载 作者:行者123 更新时间:2023-12-02 18:16:26 26 4
gpt4 key购买 nike

我正在寻求标准化值,同时保留它们的相对频率。例如,一个变量的总计数为 219,由值 56、89、145 组成。为了对这些数据进行标准化,我将每个值除以总数,然后将结果可视化为条形图,如下所示。为什么总值总和不是 1.00?

p.perc <- ggplot(bNTI.perc, aes(fill=variable,x=pond,y=value/total)) +
geom_bar(stat = "identity")
print (p.perc)

enter image description here

谢谢!我的数据:

> dput(bNTI.perc)
structure(list(pond = structure(c(1L, 2L, 3L, 4L, 1L, 2L, 3L,
4L, 1L, 2L, 3L, 4L), .Label = c("RHM", "TS", "SS", "Lilly"), class = "factor"),
total = c(291, 740, 241, 42, 291, 740, 241, 42, 291, 740,
241, 42), variable = structure(c(1L, 1L, 1L, 1L, 2L, 2L,
2L, 2L, 3L, 3L, 3L, 3L), .Label = c("sum(cor > 2)", "sum(cor < -2)",
"sum(cor > 2 | cor < -2)"), class = "factor"), value = c(56L,
213L, 49L, 0L, 89L, 156L, 70L, 19L, 145L, 369L, 119L, 19L
)), row.names = c(NA, -12L), class = "data.frame")

最佳答案

您不需要手动执行此操作。使用position = 'fill':

ggplot(bNTI.perc, aes(pond, value, fill = variable)) + geom_col(position = 'fill')

enter image description here

但您实际问题的答案是您的 total 列是错误的。 Lilly 有三个值(0、19 和 19),总和为 38,但 Lilly 组的总计为 42,不是 38,因此您的 Lilly 条加起来仅为 38/42 (0.9047619)。同样,您的 SS119 + 70 + 49 加起来为 238,但您的 SS总计为241

关于r - 将数据标准化为 100%,但总值小于 1.00,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71531295/

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