【发布时间】: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 - 不过我确实想要表中显示的级别
【问题讨论】:
-
您的意思并不完全清楚。
NA在factors 的任何集合中都被隐式允许(我相信...rbind(data.frame(b=letters[1:3]), data.frame(b=NA_character_))有效),但由于我们不知道UKData是什么样子,所以很难做很多事情。你能提供一个有代表性的样本吗?参考:stackoverflow.com/questions/5963269、stackoverflow.com/help/mcve 和 stackoverflow.com/tags/r/info。 -
所以想法是你想要显示
REGION和EMPSIZE的所有可能组合,即使它没有出现在数据中,对吧?看看这些问题的答案:stackoverflow.com/questions/32247211/fill-in-missing-rows-in-r,stackoverflow.com/questions/43233682/… -
Bingo - 您提供的第二个链接正是我所追求的。 as.data.frame(xtabs(Value ~ Group + Date, DF), responseName = "Value")