我有一个数据框:Ratio2016
Name Percapita
Alabama 0.60
Alaska 0.40
Arizona 0.22
California 1.53
要创建基于Percapita列颜色的传单地图,我想创建一个新列percent_group 0.05-0.1 0.1-0.5 0.5-1.0 1.0-1.5
我的代码: `
ratio2016<- ratio2016 %>%
mutate(percent_group = case_when(
percapita %in% 0.05:0.1 ~ 0.05-0.1,
percapita %in% 0.1:0.5 ~ 0.1-0.5,
percapita %in% 0.5:1.0 ~ 0.5-1.0,
percapita %in% 1.0:1.5 ~ 1.0-1.5,
percapita %in% 1.5:2.0 ~ 1.5-2.0))
我获得仅包含“ NA”的列 我和Nas有2行。
我的错误在哪里? 谢谢大家!
答案 0 :(得分:1)
%in%
是要检查值是否是集合的成员,因此在这里使用是错误的做法。您需要between()
。
ratio2016 <- ratio2016 %>%
mutate(percent_group = case_when(
between(percapita, 0.05, 0.1) ~ "0.05-0.1",
between(percapita, 0.1, 0.5) ~ "0.1-0.5",
between(percapita, 0.5, 1) ~ "0.5-1.0",
between(percapita, 1, 1.5) ~ "1.0-1.5",
between(percapita, 1.5, 2) ~ "1.5-2.0"))
这将为您提供专栏。
顺便说一句,您可以使用cut()
用更少的代码来完成它:
ratio2016 %>% mutate(percent_group =
cut(percapita, c(0.05, 0.1, 0.5, 1, 1.5, 2),
labels = c("0.05-0.1","0.1-0.5", "0.5-1.0", "1.0-1.5", "1.5-2.0"))
)