我有以下数据框架:
date value country
2016-10-1 1 US
2016-10-1 3 FR
2016-10-1 4 Other
2016-10-2 3 US
2016-10-2 2 FR以下是可复制的示例:
mydf <- data.frame(
date=c("2016-10-01","2016-10-01","2016-10-01","2016-10-02","2016-10-02"),
value=c(1,3,4,3,2),
country=c("US", "FR", "Other", "US", "FR"))我想添加一个新的列“比率”,它计算一行与同一日期的所有行相比的比率。
例如,对于2016-10-1,我们的总价值是8,所以2016-10-1 / US行的比率是1/8,2016-10-1 / FR的比值是3/8。
预期的数据框架是:
date value country ratio
2016-10-1 1 US 0.125
2016-10-1 3 FR 0.375
2016-10-1 4 Other 0.5
2016-10-2 3 US 0.6
2016-10-2 2 FR 0.4我试过这样的方法:
mydf <- mydf %>% mutate(ratio = value / sum(mydf[date==date]))但是,这并不令人惊讶,它不会运行。我不知道如何计算给定日期的总数。
有线索吗?
发布于 2016-05-11 15:19:15
你的问题的答案是
df %>% group_by(date) %>% mutate(ratio = value/sum(value))https://stackoverflow.com/questions/37166672
复制相似问题