R data.frame聚合数据以计算分集率
我在RR data.frame聚合数据以计算分集率,r,dataframe,R,Dataframe,我在R Name...Region...Gender ...A...........1.............F ...B...........2.............M ...C...........1.............F ...D...........1.............M ...E...........2.............M 我想计算每个地区的性别比例。输出应如下所示: Region ..........GenderRatio .... 1..
Name...Region...Gender
...A...........1.............F
...B...........2.............M
...C...........1.............F
...D...........1.............M
...E...........2.............M
我想计算每个地区的性别比例。输出应如下所示:
Region ..........GenderRatio
.... 1........................(0.67)
.... 2........................(0.50)
这可以使用正常的BODMAS使用来计算。有没有有效的方法在R中计算它?您可以使用R中的
dplyr
库进行各种数据处理。有关dplyr
和其他非常有用的R软件包的更多信息,请参阅
例如:
首先,我创建一些示例数据。(我对它做了一点修改,使其具有适合您的输出的性别比例。)
输出为:
region gender_ratio
<dbl> <dbl>
1 1 0.667
2 2 0.5
地区性别比
1 1 0.667
2 2 0.5
希望这能有所帮助。作为一种(基本R)替代方法,您可以使用by
和prop.table(table(…)
返回男性/女性分数的列表
with(df, by(df, Region, function(x) prop.table(table(x$Gender))))
#Region: 1
#
# F M
#0.6666667 0.3333333
#------------------------------------------------------------
#Region: 2
#
#F M
#0 1
或者只返回男性部分
with(df, by(df, Region, function(x) prop.table(table(x$Gender))[2]))
#Region: 1
#[1] 0.3333333
#------------------------------------------------------------
#Region: 2
#[1] 1
或者将雄性部分和区域存储在数据框中
只需堆栈
上述结果:
setNames(
stack(with(df, by(df, Region, function(x) prop.table(table(x$Gender))[2]))),
c("GenderRatio", "Region"))
# GenderRatio Region
#1 0.3333333 1
#2 1.0000000 2
输出与输入不匹配:示例数据中区域2为100%男性。您好,欢迎继续。你可能想阅读并改进你提问的方式。这为愿意帮助你的人简化了事情,因此也可能改善你的生活谢谢@symbolrush。这起作用了。
with(df, by(df, Region, function(x) prop.table(table(x$Gender))[2]))
#Region: 1
#[1] 0.3333333
#------------------------------------------------------------
#Region: 2
#[1] 1
setNames(
stack(with(df, by(df, Region, function(x) prop.table(table(x$Gender))[2]))),
c("GenderRatio", "Region"))
# GenderRatio Region
#1 0.3333333 1
#2 1.0000000 2