r - 具有不同度量的 R 重复
问题描述
我正在处理一个凌乱的人口普查数据集,其中variable
列 (high school
和university
) 中有重复项,但这些重复项实际上测量的结果略有不同。列中数字较高的度量是count
15 岁及以上 ( highest_educ_15_over
) 的总数。较低的数字始终是 24-65 岁的最高教育(highest_educ_24_65
)。这是视觉对象的数据。
data <- tribble(
~town, ~variable, ~count,
"A","highest_educ_15_over",100,
"A","high school",80,
"A","university",20,
"A","highest_educ_24_65",50,
"A","high school",40,
"A","university", 10,
"B","highest_educ_15_over",1000,
"B","high school", 800,
"B", "university", 200,
"B", "highest_educ_24_65", 500,
"B", "high school", 400,
"B", "university", 100)
我不能简单地过滤高中或大学,因为它返回两个值。最终我不希望数据集看起来像这样:
tribble(
~town, ~highest_educ_15_over, ~highschool, ~university,
"A", "100","80","20",
"B", "1000","800","200"
)
我自动为每个城镇和相应的总分母取最高high school
值university
。
关于如何解决这个问题的任何想法?
解决方案
我们可以按顺序进行分组,然后将其pivot_wider
更改为“宽”格式
library(dplyr)
library(tidyr)
data %>%
group_by(town, variable) %>% mutate(rn = row_number()) %>%
pivot_wider(names_from = variable, values_from = count) %>%
filter_at(3:ncol(.), all_vars(!is.na(.))) %>%
select(-rn)
推荐阅读
- android - 迁移到 AndroidX 后,图像未在 WebViewClient 中显示
- javascript - 用酶模拟点击似乎不会更新父组件中的状态
- flutter - 在这个同步函数上,第二条语句在第一条语句之前运行
- html - 有没有办法让css考虑svg占用多少空间
- windows - 带有 LF 行结尾的 Git 签出文件
- javascript - 无法从 axios GET 请求中检索数据
- swift - SwiftLint:如何为具有警告和错误配置的规则配置规则严重性
- authentication - Azure Batch 任务与 Azure REST API 的集成
- wordpress - 尽管我已在阅读页面中选择,但无法在 Wordpress 中创建 Elementor 帖子页面
- java - JDBC类型没有方言映射:2003,但已注册