在dplyr

时间:2018-10-15 13:26:22

标签: r dplyr

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

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

我还尝试了mutate函数以包括所有级别的因子,但是它也不起作用

这是我的代码,其中包含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-我确实希望表格中显示的水平

1 个答案:

答案 0 :(得分:0)

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