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