【问题标题】:Include NAs when using group_by in dplyr在 dplyr 中使用 group_by 时包括 NA
【发布时间】:2019-03-19 22:43:22
【问题描述】:

我正在使用 dplyr 来汇总一些数据,并按两个因素对其进行分组。问题不是第二个因素的所有级别都包含在第一个因素中,而且我的数据框没有显示没有结果的实例。

我想包含一个 na.rm=FALSE 语句(我认为),但这不起作用。

我也尝试了 mutate 函数来包含所有级别的因子,但它也不起作用

这是我的包含变异的代码

Dataframe <- UKData %>%
  filter(!is.na(REGION))%>%
  group_by(REGION,EMPSIZE) %>%
  summarise(NumberofEmployers=length(Employers)) %>%
  mutate(EMPSIZE =  factor(EMPSIZE, levels = z)) %>%
  arrange(REGION,EMPSIZE) 

所以问题在于,并非每个地区都有所有雇主规模。雇主大小范围包含 7 个级别。我想要一个表格来显示该区域没有特定大小范围的 NA。这可能吗?

更新,

所以数据看起来像这样:

Employers     REGION    EMPSIZE
Number 1    Scotland    1-4
Number 2    Scotland    5-49
Number 3    Scotland    50-499
Number 4    Scotland    500-999
Number 5    Scotland    1000-4999
Number 6    Scotland    5000+
Number 7    Scotland    50-499
Number 8    North West  5-49
Number 9    North West  1000-4999
Number 10   Yorkshire   5000+
Number 11   Yorkshire   50-499
Number 12   Yorkshire   5-49
Number 13   London      1-4
Number 14   London      5-49
Number 15   London      50-499
Number 16   London      500-999
Number 17   London      1000-4999
Number 18   London      5000+
Number 19   East        50-499
Number 20   East        1000-4999

因此,只有苏格兰和伦敦拥有全部 6 种可能的尺寸范围,其他地区则没有。所以我想要的表应该是这样的:

REGION    EMPSIZE       number
Scotland    1-4             1
Scotland    5-49            1
Scotland    50-499          2
Scotland    500-999         1
Scotland    1000-4999       1
Scotland    5000+           1
North West  1-4             NA
North West  5-49            1
North West  50-499          NA
North West  500-999         NA
North West  1000-4999       1
North West  5000+           NA
Yorkshire   1-4             NA
Yorkshire   5-49            1
Yorkshire   50-499          1
Yorkshire   500-999         NA
Yorkshire   1000-4999       NA
Yorkshire   5000+           1
London      1-4             1
London      5-49            1
London      50-499          1
London      500-999         1
London      1000-4999       1
London      5000+           1
East        1-4             NA
East        5-49            NA
East        50-499          1
East        500-999         NA
East        1000-4999       1
East        5000+           NA

事后看来,也许我不在乎它们是 NA 还是实际上是 0 - 不过我确实想要表中显示的级别

【问题讨论】:

标签: r dplyr


【解决方案1】:

如果他们没有 EmpSize,那么为什么要将其包含在数据框中?如果我是你,我会保留缺少数据的行,因为 NA 只会使表格更难阅读。如果您的目标是显示 EmpSize,则不会通过删除缺失值“丢失”任何信息。如果有的话,将 NA 保留在表中时会更难阅读。 (此外,0 与 NA 不同,因此将 NA 替换为 0 可能不是一个好主意)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-04
    • 1970-01-01
    • 1970-01-01
    • 2018-10-12
    • 1970-01-01
    • 2018-06-08
    • 1970-01-01
    相关资源
    最近更新 更多