使用小计和总计的计算
Posted
技术标签:
【中文标题】使用小计和总计的计算【英文标题】:Calculations using subtotals and totals 【发布时间】:2018-02-28 19:46:04 【问题描述】:我有一个数据集,我在其中根据总 mpg 计算权重,并将此权重应用于常数以计算列“分布”。我想做的是,将另一个常数 100 分配给制造商是梅赛德斯的汽车。因此,我首先计算每辆汽车在总数中的位置,并分配 1000 辆称为分配,再加上另外 100 辆梅赛德斯汽车。我该怎么做?
library(data.table)
library(dplyr)
a <- mtcars
setDT(a, keep.rownames = TRUE)
colnames(a)[1] <- "Car"
b <- a %>%
select(Car,mpg) %>%
mutate(Weighting = mpg / sum(mpg)) %>%
mutate(Distribution = Weighting * 1000)
示例输出:无法弄清楚如何在 R 中获取它,但这是一个显示预期结果的 excel 图像。
想到的唯一解决方案是单独计算并将其分配为常数。
非常感谢您的帮助。 阿克塞尔
【问题讨论】:
请提供几个示例行作为示例和所需的输出。 【参考方案1】:添加ifelse
?
并将奔驰车与substr(Car, 1, 4) %in% "Merc"
匹配
b <- a %>%
select(Car,mpg) %>%
mutate(Merc_Weighting = ifelse(substr(Car, 1, 4) %in% "Merc", mpg / sum(mpg[substr(Car, 1, 4) %in% "Merc"]), NA)) %>%
mutate(Merc_Distribution = Merc_Weighting * 100)
【讨论】:
谢谢。我希望根据梅赛德斯 mpg 的加权值分配 100。刚刚添加了一个 Excel 电子表格来演示。 我仍然不清楚你想要什么,100 加到哪里以及加到什么上? 这 1000 个被分发给所有人。 100只给梅赛德斯。所以你看到的第一个分布列加起来是 1000,梅赛德斯分布列加起来是 100。所以这 100 个需要在梅赛德斯之间分配。所以每个 Merc 不是 100。【参考方案2】:很抱歉占用了人们的时间,但对我来说似乎最简单的解决方案是首先计算梅赛德斯的总余额并将其分配给一个变量,然后通过引用我的变量来进行剩余的计算。
如果有人遇到类似问题,请给我留言,我非常乐意提供帮助。
【讨论】:
以上是关于使用小计和总计的计算的主要内容,如果未能解决你的问题,请参考以下文章