Dplyr-创建一个新列“带小数的数字组”

时间:2018-12-11 20:58:28

标签: r dataframe dplyr mutate

我有一个数据框: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行。

我的错误在哪里? 谢谢大家!

1 个答案:

答案 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"))
  )