r - R data.frame 聚合数据以计算多样性比率
问题描述
我在R中有一个人口统计数据的数据框
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 中计算它吗?
解决方案
作为(base R)替代方案,您可以使用by
with为男性/女性prop.table(table(...))
返回一个分数list
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
data.frame
或者将男性分数和区域存储stack
在上述结果中:
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
推荐阅读
- angular - angular 8 ngx-datatable 页脚未显示
- arm - 注册号是奇数?
- c# - 在使用 LanguageExt 时使用替代/默认返回来处理“失败”?
- r - 有没有一种方法可以根据每个点的条形图将点图覆盖在条形图上?
- python - Pandas for 循环没有用 iloc 正确更新行?
- kubernetes - 使用fluentd,我只想从json数据中输出一个关键数据
- java - 从 ehCache 卸载已编译的 XSLT (xsltExecutable)
- javascript - 在 Javascript 中替换 $n1 - $nx
- java - Java Regex 替换与特定文本匹配的行
- html - 是否可以在 HTML/CSS 中将页脚框居中?