将因子添加到dplyr汇总表

时间:2017-06-02 17:24:32

标签: r dplyr

我已经搜索了这个主题并找到了部分解决方案,但仍然坚持一个方面。我试图从dplyr操纵一个管道汇总表,以便我可以用ggplot绘制它。数据来自调查研究。我希望按种族报告响应变量(这是一个平均统计量)。在我们的调查研究中,我们通过两个问题来确定种族。第一个问题是关于西班牙裔的(它编码为"西班牙裔"或"非西班牙裔";第二个问题是关于种族/种族(它也是一个因素)变量的选项是白种人,非洲裔美国人,亚洲人和其他。我们这样做是因为经常会有交叉导致报告不足。

出于报道目的,我们希望将西班牙裔美国人添加到表格和情节中。我想出了如何使用dplyr执行此操作,但我无法对行显示的方式进行重新排序。每一次重构的尝试都没有奏效。甚至像fct_relevel和fct_recode这样的forcats选项都没有用。

以下是相关代码:

# Generate some random anonymous data
dd.scrub <- data.frame(matrix(NA, ncol = 3, nrow = 100))
names(dd.scrub) <- c("Ethnicity", "Hispanic", "Attachment.base")
ethnicities <- c("Caucasian", "AA", "Asian", "Other")
hispanic_origin <- c("Hispanic", "Non-Hispanic")
set.seed(40769)
dd.scrub$Ethnicity <- factor(floor(runif(100, min=1, max=5)),
                         levels = c(1:4),
                         labels = ethnicities)
dd.scrub$Hispanic <- factor(sample(hispanic_origin, 
                               size = 100, 
                               replace = TRUE,
                               prob=c(0.2, 0.8)))
dd.scrub$Attachment.base <- rnorm(100, mean = 26.8, sd=7.921)

# By ethnicity including Hispanic origin (HHI + Hispanic?)
attachment.ethnicity <- dd.scrub %>% filter(!is.na(Ethnicity)) %>%
group_by(Ethnicity)
attachment.ethnicity.sum <- summarise(attachment.ethnicity, 
Attachment = mean(Attachment.base))

# Ethnicty + hispanic
library(forcats)
library(questionr)
attachment.hispanic.sum <- dd.scrub %>% 
filter(Hispanic == "Hispanic") %>% 
    summarise(Attachment = mean(Attachment.base))
fct_expand(attachment.ethnicity.sum$Ethnicity, "Hispanic")
attachment.ethnicity.sum <- bind_rows(attachment.ethnicity.sum, attachment.hispanic.sum)
attachment.ethnicity.sum$Ethnicity <- addNAstr(attachment.ethnicity.sum$Ethnicity, value = "Hispanic")

结果表是:

# A tibble: 5 × 2
  Ethnicity Attachment
     <fctr>      <dbl>
1 Caucasian   27.01052
2        AA   29.62579
3     Asian   26.38861
4     Other   26.75793
5  Hispanic   27.57609

这成功地让我得到了一个可以绘制的东西。但是西班牙裔在其他之后的任意排序是相当奇怪的。

非常感谢任何帮助!

0 个答案:

没有答案