r - 在其他数据框中重新计算值以进行计算
问题描述
我有一个看起来像这样的df:
df1 <- data.frame(country = c("C1","C1","C2","C2"),year = c(1998,2001,1998,2001), amount = c(11000,11500,5000,4100))
我在第一个 df 的基础上创建了另一个 df,如下所示:
df2 <- aggregate(amount ~ year, df1, sum)
我会创建一个新列df1$ratio
,对应于每年每个 ID 的数量配给。它应该看起来像:
df3 <- data.frame(country = c("C1","C1","C2","C2"),year = c(1998,2001,1998,2001), amount = c(11000,11500,5000,4100), ratio = c(.6875, .7372,.3125,.2628))
任何的想法?
解决方案
ave
可以使用from来完成,而不是两步过程base R
df1$ratio <- with(df1, amount/ave(amount, year, FUN = sum))
或mutate
从dplyr
library(dplyr)
df1 %>%
group_by(year) %>%
mutate(ratio = amount/sum(amount))
推荐阅读
- java - Swagger codegen swagger-jersey2-jaxrs with spring boot 2 / Spring 5 不工作
- angular - 连接被拒绝:localhost:4200 favicon.ico 502 in angular 7
- java - 可执行的 .jar 文件不运行
- scala - 如何在 Scala 中建模布隆过滤器
- linux - 从 go lang 程序启动终端窗口?
- java - 如何为 SpringBoot 配置多个 SQS JMS 侦听器。?
- r - 在 R 上添加设置列值作为最小/最大误差线
- python - Python无法使用硒识别表格单元格中的文本
- android - 片段相互重叠......并且前一个片段正在单击
- regex - 如何使用正则表达式检查单词边界是否全为零