R语言 为什么我的mutate函数只对个位数有效[duplicate]

js5cn81o  于 2023-02-20  发布在  其他
关注(0)|答案(1)|浏览(122)
    • 此问题在此处已有答案**:

Way to avoid nested ifelse statement in R(2个答案)
2天前关闭。
我想使用数据中的年龄变量创建一个具有不同年龄段的"年龄类别"变量。

New_Data <- New_Data %>% mutate(Age_category = case_when(New_Data$Age <1 ~ "<1",
        New_Data$Age >=1 & New_Data$Age <=4 ~ "1-4",
        New_Data$Age >4  & New_Data$Age <=9 ~ "5-9",
        New_Data$Age >9  & New_Data$Age <=14 ~ "10-14",
        New_Data$Age >14 & New_Data$Age <=19 ~ "15-19",
        New_Data$Age >19 & New_Data$Age <=24 ~ "20-24",
        New_Data$Age >24 & New_Data$Age <=29 ~ "25-29",
        New_Data$Age >29 & New_Data$Age <=34 ~ "30-34",
        New_Data$Age >34 & New_Data$Age <=39 ~ "35-39",
        New_Data$Age >39 & New_Data$Age <=44 ~ "40-44",
        New_Data$Age >44 & New_Data$Age <=49 ~ "45-49",
        New_Data$Age >49 & New_Data$Age <=54 ~ "50-54",
        New_Data$Age >54 & New_Data$Age <=59 ~ "55-59",
        New_Data$Age >59 & New_Data$Age <=64 ~ "60-64",
        New_Data$Age >64 ~ "65+",
        New_Data$Age == "NULL" ~ "NULL"))

我希望在年龄类别列中显示以下内容

"<1", "1-4","5-9", "10-14", "15-19","20-24", "25-29", "30-34",  "35-39","40-44", "45-49", "50-54", "55-59",
      "60-64", "65+","NULL"

虽然年龄类别变量创建成功,但它只包含三个年龄不同的年龄段("5 - 9""〈1""1 - 4""65 +")。我不明白为什么其他年龄段还没有创建,而数据中却存在他们的年龄

8dtrkrch

8dtrkrch1#

如果你发现自己在case_when中使用了这么多的子句,你应该问问自己是否存在更简单的子句,在你的例子中,如果你使用cut,它会节省大量的编码和调试:

New_Data %>%
  mutate(Age_category = cut(Age, 
                            breaks = c(0, 0.5, seq(4.5, 64.5, 5), 100), 
                            labels = c("<1", "1-4", "5-9", "10-14", "15-19",
                                       "20-24", "25-29", "30-34", "35-39",
                                       "40-44", "45-49",  "50-54", "55-59",
                                       "60-64", "65+")))
#>    Age Age_category
#> 1   68          65+
#> 2   39        35-39
#> 3    1          1-4
#> 4   34        30-34
#> 5   87          65+
#> 6   43        40-44
#> 7   14        10-14
#> 8   82          65+
#> 9   59        55-59
#> 10  51        50-54

创建于2023年2月17日,使用reprex v2.0.2

    • 所用数据**
set.seed(1)
New_Data <- data.frame(Age = sample(100, 10))

相关问题