以下のこのコマンドは、グループごとの人口を追加し、それを各グループの行数で割ることによってテーブルを要約することを知っています。
dt[, .(pop=sum(pop_ct)/sum(.N)), , by=.(geoid)]
ただし、私がやりたいことは、各グループの別の列の行数 によって、合計された母集団を分割することです。このようなもの:
dt[, .(pop=sum(pop_ct)/ nrow(dt$geoid) ), , by=.(geoid)]
ここでのポイントは、geoid
id6
とid7
が のサブリージョンでct
E1010
あるため、と の人口は、それらが含まれるより広い地域の人口id6
とid7
同じ割合である必要があるということです。E1010
期待される結果
以下の再現可能な例を使用すると、これは私が得たい結果です。
> geoid pop
> 1: id1 47
> 2: id2 35
> 3: id3 10
> 4: id5 30
> 5: id4 10
> 6: id6 10
> 7: id7 10
再現可能な例
dt <- data.table(
udh = LETTERS[c(1,1,1,1,2,2,3,3,3,4,5,5)],
ct = c('A000','A111','A222','A333','B444','B555','C666','C777','C888','D999','E1010','E1010'),
pop_udh = c(40,40,40,40,30,30,45,45,45,17,20,20),
pop_ct = c(20,10,8,2,25,5,5,30,10,17,20,20),
poor_prop_udh = c(10,10,10,10,5,5,8,8,8,7,9,9),
geoid = c('id1','id2','id2','id1','id1','id3','id3','id5','id4','id2','id6','id7'))