如何在facet wrap中组织打印顺序

如何在facet wrap中组织打印顺序,r,facet,facet-wrap,R,Facet,Facet Wrap,我试图根据50岁的年龄,以不同的方式对情节进行排序。我一直在尝试创建一个因子,将它们按我想要的顺序排列,正如我在堆栈上的一些回答问题中所看到的,但它似乎将所有年龄段都变成了“NA”。这些答案中提供的代码对我不起作用 我曾尝试创建一个不同级别的因子,但这实际上从数据框中删除了年龄 glimpse(zbias) Observations: 9,615 Variables: 5 $ ID <chr> "5129615189", "5128877943", "5126775994

我试图根据50岁的年龄,以不同的方式对情节进行排序。我一直在尝试创建一个因子,将它们按我想要的顺序排列,正如我在堆栈上的一些回答问题中所看到的,但它似乎将所有年龄段都变成了“NA”。这些答案中提供的代码对我不起作用

我曾尝试创建一个不同级别的因子,但这实际上从数据框中删除了年龄

glimpse(zbias)
Observations: 9,615
Variables: 5
$ ID       <chr> "5129615189", "5128877943", "5126775994", "5126598863", "5124909744…
$ Age      <chr> "30-50 years", "> 50 years", "30-50 years", "30-50 years", "> 50 ye…
$ Country  <chr> "France", "Spain", "Spain", "Albania", "Ireland",   "Denmark", "Belgi…
$ vignette <fct> v01_z, v01_z, v01_z, v01_z, v01_z, v01_z, v01_z, v01_z, v01_z, v01_…
$ stdbias  <dbl> 0.2716474, 0.2716474, 0.2716474, 0.6791186, 0.2716474, 0.2716474, 0…

zbais <- stdbias

zbias$Age <- factor(zbias$Age, levels=c("< 30","30-50","> 50"), ordered=TRUE)

#Plot standard z-scores by age group
ggplot(zbias)+
geom_density(aes(stdbias))+
 facet_wrap(~Age, scales = "free_x")+
  labs(x="Standard Bias", y="Density")

 dput(head(zbias))
structure(list(ID = c("5129615189", "5128877943", "5126775994", 
"5126598863", "5124909744", "5122047758"), Age = c("30-50 years", 
"> 50 years", "30-50 years", "30-50 years", "> 50 years", "30-50 years"
), Country = c("France", "Spain", "Spain", "Albania", "Ireland", 
"Denmark"), vignette = structure(c(1L, 1L, 1L, 1L, 1L, 1L), .Label =    c("v01_z", 
"v02_z", "v03_z", "v04_z", "v05_z", "v06_z", "v07_z", "v08_z", 
"v09_z", "v10_z", "v11_z", "v12_z", "v13_z", "v14_z", "v15_z"
), class = "factor"), stdbias = c(0.271647421614958, 0.271647421614958, 
0.271647421614958, 0.679118554037396, 0.271647421614958, 0.271647421614958
)), row.names = c(NA, 6L), class = "data.frame")

我得到了镶嵌面包裹中的三个图,但是30-50和>50在错误的位置。因此,我希望他们按年龄按升序排列。谢谢你的帮助

问题在于您创建因子的线。您的新级别(例如<30)与原始列中的字符(例如<30年)不匹配。如果你想要较短的版本,你需要先去掉年份。您可以使用gsub来实现此目的。请参见此示例:

library(tidyverse)

# your groups
age_groups <- c("< 30","30-50","> 50")

# sample data
zbias <- tibble(stdbias=1:99,Age=rep(c("< 30 years", "30-50 years", "> 50 years"),33))

# creating new categories
zbias <- zbias %>%
  mutate(age_cat=gsub(" years","",Age)) %>%
  mutate(age_cat=factor(age_cat,levels=age_groups))

# plotting
ggplot(zbias)+
  geom_density(aes(stdbias))+
  facet_wrap(~age_cat, scales = "free_x")+
  labs(x="Standard Bias", y="Density")
这能解决你的问题吗


请提供dputheadzbias,以便您的问题是可重复的。问题可能在您创建因子的行中-级别与zbias$Age中的元素不对应。是的,您指出了一个非常明显的缺陷,并且已修复!非常感谢。