r - 用 R 中每行的频率和百分比创建一个表
问题描述
我的数据集中有以下数据:
Country <- c("ARG","BR","US","PY","SZ","SP","PT")
Gender <- c("MALE","FEMALE","MALE","MALE","FEMALE","MALE","FEMALE")
我想创建一个这样的表:
| Country | n Male | % Male | n Female | % Female |
| --------| ------------------------------------- |
| ARG | 1543 | 5,42% | 1741 | 6,01% |
| BR | 1980 | 8,49% | 1320 | 4,51% |
我试过使用 CrossTable 但不一样。我怎样才能做到这一点?
解决方案
使用 data.table 的一种方法:
library(data.table)
dt <- data.table( Country = c("ARG", "ARG", "BR", "US", "PY", "SZ", "SP", "PT"),
Gender = c("MALE", "MALE", "FEMALE", "MALE", "MALE", "FEMALE", "MALE", "FEMALE"))
dt[ , .(n_male = sum(Gender == "MALE"),
pct_male = sum(Gender == "MALE") / nrow(dt),
n_female = sum(Gender == "FEMALE"),
pct_female = sum(Gender == "FEMALE") / nrow(dt)),
by = .(Country)]
#> Country n_male pct_male n_female pct_female
#> 1: ARG 2 0.250 0 0.000
#> 2: BR 0 0.000 1 0.125
#> 3: US 1 0.125 0 0.000
#> 4: PY 1 0.125 0 0.000
#> 5: SZ 0 0.000 1 0.125
#> 6: SP 1 0.125 0 0.000
#> 7: PT 0 0.000 1 0.125
推荐阅读
- python - 将字符串分隔为不同的参数(不知道如何表达这个哈哈)
- c++ - 检查 C++ 代码中设置的编译器标志
- chromium - 无法通过 Gauge/taiko 框架中的 docker 启动 chromium 浏览器,并且由于浏览器或页面未初始化而出现错误。调用`openBrowser()`
- r - R 对象/赋值语义
- linux - 如何使用 bash 脚本自动使用选定列对数据进行子集化过程?
- ios - 如何使 Thread.callstacksymbols 输出可读
- r - 如何使用 R 绘制 Pabon Lasso 图
- c# - 如何使用 isTrigger ON 添加 PolygonCollider2D 组件?
- node.js - 使用 Typescript 设置 Express 以使用顶级异步
- python-3.x - 如何从中提取最佳参数
? 如何解释这个输出?