我试图在列中创建值的条件总和,前提是它们共享相同的Country,Year和Age,并将整数除以Num给出的值。我的数据框看起来像这样:
Country Num Year Age Variable
AU 20 1989 12 0.009
AU 20 1989 12 0.0015
AU 20 1989 13 0.008
AU 19 1990 19 0.005
USA 1 2011 55 0.0001
到目前为止,我已尝试使用dplyr,但我对如何有效调节以及如何除以Num感到困惑
dta %>% mutate(Variable) %>% group_by(Country,Year,Age) %>%
summarise(ME=sum(Variable)[,"ME"], MAE=sum(Variable)[,"MAE"])
非常感谢任何帮助!
答案 0 :(得分:3)
这是一个dplyr
解决方案,用于解释您尝试实现的目标。
dat %>% group_by(Country, Year, Age) %>% mutate(ME = sum(Variable)/sum(Num))
Source: local data frame [5 x 6]
Groups: Country, Year, Age
Country Num Year Age Variable ME
1 AU 20 1989 12 0.0090 0.0002625000
2 AU 20 1989 12 0.0015 0.0002625000
3 AU 20 1989 13 0.0080 0.0004000000
4 AU 19 1990 19 0.0050 0.0002631579
5 USA 1 2011 55 0.0001 0.0001000000
答案 1 :(得分:3)
使用data.table
你可以这样做
library(data.table)
setDT(dat)[, ME := sum(Variable)/sum(Num), by = .(Country, Year, Age)]
#> dat
# Country Num Year Age Variable ME
#1: AU 20 1989 12 0.0090 0.0002625000
#2: AU 20 1989 12 0.0015 0.0002625000
#3: AU 20 1989 13 0.0080 0.0004000000
#4: AU 19 1990 19 0.0050 0.0002631579
#5: USA 1 2011 55 0.0001 0.0001000000
答案 2 :(得分:2)
我不确定我完全理解你的意思是将整数除以Num给出的值,但这是一个简单的解决方案:
ddply(dta, c('Country','Year','Age'), function(d) {
data.frame(wsum = sum(d$Variable)/sum(d$Num))
})