【发布时间】:2018-05-24 16:21:57
【问题描述】:
这是此处提出的问题的变体:Group factor levels in ggplot。
我有一个数据框:
df <- data.frame(respondent = factor(c(1, 2, 3, 4, 5, 6, 7)),
location = factor(c("California", "Oregon", "Mexico",
"Texas", "Canada", "Mexico", "Canada")))
与美国相关的三个不同级别。我不想折叠它们,因为状态之间的区别对数据分析很有用。但是,我想要一个基本的条形图,它结合了美国的三个州并将它们相互堆叠,因此条形图中有三个条形图——加拿大、墨西哥和美国——美国条形图分开分为三种状态:
如果州因素级别的名称中包含“US”,例如“美国:加利福尼亚”,我可以使用
library(tidyverse)
with_states <- df %>%
separate(location, into = c("Country", "State"), sep = ": ") %>%
replace_na(list(State = "Other")) %>%
mutate(State = as.factor(State)
%>% fct_relevel("Other", after = Inf))
达到预期的结果。但是当 R 不知道这三个州在美国时,这怎么能做到呢?
【问题讨论】:
-
您可能必须创建一个使用字典(即查找表)的进程才能更新
location变量。如果位置是美国的一部分,则名称应更新为 US: location。然后,您可以使用您发布的代码来实现预期的结果。