我知道下面的这个命令将通过按组添加人口并将其除以每个组的行数来总结我的表格。
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'))