我已经搜索了这个主题并找到了部分解决方案,但仍然坚持一个方面。我试图从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
这成功地让我得到了一个可以绘制的东西。但是西班牙裔在其他之后的任意排序是相当奇怪的。
非常感谢任何帮助!