【问题标题】:R-duplicates with different measures具有不同度量的 R 重复
【发布时间】:2020-07-14 23:06:28
【问题描述】:

我正在处理一个混乱的人口普查数据集,其中variable 列(high schooluniversity)中有重复项,但这些重复项实际上测量的结果略有不同。 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 schooluniversity 的最高值。

关于如何解决这个问题的任何想法?

【问题讨论】:

  • 你能澄清一下你的预期输出是什么吗? “最终我不希望数据集看起来像这样”并不清楚。另外,您打算如何计算“总分母”?

标签: r dplyr tidyr data-cleaning


【解决方案1】:

我们可以按顺序进行分组,然后使用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)

【讨论】:

  • 也许只是添加一个过滤器调用来过滤掉 NA。 filter(!is.na(highest_educ_15_over))
猜你喜欢
  • 2015-08-09
  • 2016-11-20
  • 1970-01-01
  • 2017-08-09
  • 1970-01-01
  • 2017-10-12
  • 2020-11-23
  • 1970-01-01
  • 2021-09-03
相关资源
最近更新 更多