我有一个数据集,我根据总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图像。
想到的唯一解决方案是单独计算并将其指定为常量。
非常感谢您的帮助。 阿克塞尔
答案 0 :(得分:0)
添加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)
答案 1 :(得分:-1)
很抱歉占用了人们的时间,但似乎对我来说最简单的解决方案是首先计算梅赛德斯的总余额并将其分配给变量,然后通过参考我的变量来完成剩余的计算。
如果有人遇到类似的问题,请告诉我一行,我会非常乐意提供帮助。