r - pivot_wider 单行
问题描述
今天早上是我的例行公事。咖啡、纽约时报和基于 R 的问题/学习。一直在写一篇博客文章,并利用该tidycensus
软件包,并开发了一个有趣的问题。
如何pivot_wider 表中的单行?或者如何根据单行的条件创建比例?
我正在尝试根据总人口创建一定比例的白人和黑人人口数据。初始表如下所示...
Ohio_population_acs5 %>%
group_by(ID) %>%
summarise(Total = sum(estimate))
# A tibble: 3 x 2
ID Total
<chr> <dbl>
1 Black or African American 1336133
2 Total 8204988
3 White 6283529
使用这张桌子,我最初的想法是pivot_wider()
桌子,then pivot_longer()
看起来像这样的结果......
Ohio_population_acs5 %>%
group_by(ID) %>%
summarise(Total = sum(estimate)) %>%
pivot_wider(names_from = ID, values_from = Total) %>%
pivot_longer(cols = c(`Black or African American`,`White`), names_to = "ID", values_to = "value")
# A tibble: 2 x 3
Total ID value
<dbl> <chr> <dbl>
1 8204988 Black or African American 1336133
2 8204988 White 6283529
然后在 value 列和 Total 之间创建一个比例比...
Ohio_population_acs5 %>%
group_by(ID) %>%
summarise(Total = sum(estimate)) %>%
pivot_wider(names_from = ID, values_from = Total) %>%
pivot_longer(cols = c(`Black or African American`,`White`), names_to = "ID", values_to = "value") %>%
group_by(ID) %>%
mutate(Prop_pop = value/Total)
# A tibble: 2 x 4
# Groups: ID [2]
Total ID value Prop_pop
<dbl> <chr> <dbl> <dbl>
1 8204988 Black or African American 1336133 0.163
2 8204988 White 6283529 0.766
但是,选择行pivot_wider()
而不是整列,然后填充值要方便得多。也许有一种更简单的方法来处理这个过程,但似乎可能有一个函数或过程可以将pivot_wider
-组合pivot_longer
成一个操作,特别是提取单个行值。
希望这是一个比其他问题更容易的问题。感谢您对此的帮助,并期待回复。如果需要任何澄清(或可重复的示例),请告诉我。
解决方案
您无需任何旋转即可获得该输出
library(dplyr)
df %>%
rename_at('Total', ~'value') %>%
transmute(Total = value[ID == 'Total'],
ID,
value,
Prop = value/Total) %>%
filter(ID != 'Total')
# Total ID value Prop
# 1 8204988 Black or African American 1336133 0.1628440
# 2 8204988 White 6283529 0.7658182
推荐阅读
- java - 过滤文件类型搜索和删除java
- angular - 在角度材料工具栏中放置主页链接
- java - 线程“restartedMain”中的异常 java.lang.reflect.InvocationTargetException
- javascript - 从每个页面加载调用 javascript 函数,而不在其他 html 页面中进行任何更改
- python - Beam / Dataflow 自定义 Python 作业 - 云存储到 PubSub
- android - 我使用 fcm 向设备发送通知,但收不到通知
- amazon-web-services - 使用系统管理器运行命令在 AWS 上的 maven artifactory 下载并安装 exe 文件
- exception - 我在使用 PHP 7.2 的条件下在 Cakephp 2.5 中抛出异常,它什么也没抛出,为什么?
- sql - 为什么我在这里得到 System.Data.DataRow?
- python - Python 找不到已安装的模块