我正在寻找一个解决方案,用data.table计算一些变量的加权和.我希望这个例子足够清楚.
require(data.table)
dt <- data.table(matrix(1:200, nrow = 10))
dt[, gr := c(rep(1,5), rep(2,5))]
dt[, w := 2]
# Error: object 'w' not found
dt[, lapply(.SD, function(x) sum(x * w)),
.SDcols = paste0("V", 1:4)]
# Error: object 'w' not found
dt[, lapply(.SD * w, sum),
.SDcols = paste0("V", 1:4)]
# This works with out groups
dt[, lapply(.SD, function(x) sum(x * dt$w)),
.SDcols = paste0("V", 1:4)]
# It does not work by groups
dt[, lapply(.SD, function(x) sum(x * dt$w)),
.SDcols = paste0("V", …Run Code Online (Sandbox Code Playgroud) 对于以下简单数据集;
row country year
1 NLD 2005
2 NLD 2005
3 BLG 2006
4 BLG 2005
5 GER 2005
6 NLD 2007
7 NLD 2005
8 NLD 2008
Run Code Online (Sandbox Code Playgroud)
下面的代码:
df[, .N, by = list(country, year)][,prop := N/sum(N)]
Run Code Online (Sandbox Code Playgroud)
给出观测值占观测值总数的比例。然而我想要的是衡量每个国家的比例。我应该如何调整这段代码才能给出正确的比例?
期望的输出:
row country year prop
1 NLD 2005 0.6
2 NLD 2005 0.6
3 BLG 2006 0.5
4 BLG 2005 0.5
5 GER 2005 1
6 NLD 2007 0.2
7 NLD 2005 0.6
8 NLD 2008 0.2
Run Code Online (Sandbox Code Playgroud)