R - 加权总和

R - Weighted sum

我有一个数据框,其中包含来自某种人口普查的多个答案。 我想对某些地方实际居住的人数求和,为此我还需要计算一个加权变量 - 我不能只对 table 显示的所有人数求和。

  ZONA   ID_DOM   FE_DOM NO_MORAD
1    1 00010001 15.41667        2
2    1 00010001 15.41667        2
3    1 00010001 15.41667        2
4    1 00010001 15.41667        2
5    1 00010001 15.41667        2
6    1 00010002 15.41667        4

再说一遍,我想通过ZONA得到NO_Morad的总和,每个ID_DOM只计算一次。所有这些都由 FE_DOM.

加权

只是计算我使用

ID_DOM 的数量
Zona <- count(OD_2017[!duplicated(OD_2017$ID_DOM),], wt = FE_DOM, Zonas=ZONA, name = "N_domicilios")

但现在我不知道该怎么做。我正在尝试

Zona <- OD_2017 %>%
  group_by(ZONA) %>%
  summarise(ID_DOM = n_distinct(ID_DOM), weights(FE_DOM))

但没有成功。

有什么建议吗?

谢谢

我在您的尝试中看到管道,但这是使用 data.table 的一种方法。

数据:

df <- structure(list(ZONA = c(1, 1, 1, 1, 1, 1), ID_DOM = c("00010001", 
"00010001", "00010001", "00010001", "00010001", "00010002"), FE_DOM = c(15.41667, 15.41667, 
15.41667, 15.41667, 15.41667, 15.41667), NO_MORAD = c(2, 2, 2, 
2, 2, 4)), class = "data.frame", row.names = c(NA, -6L))

代码:

library(data.table)
dt <- as.data.table(df)
dt[,unique(.SD)[,.(WeightedSum = sum(FE_DOM * NO_MORAD))],by="ZONA"]

输出:

   ZONA WeightedSum
1:    1    92.50002