当使用case_函数时,如何使用它?我的输出是NA';s在R

当使用case_函数时,如何使用它?我的输出是NA';s在R,r,dplyr,R,Dplyr,我与50岁以上的高级客户建立了以下数据框架 西尼尔斯达 Name X_Age Mike 55 July 64 Fay 76 Martin 93 Zack 54 Jenny 83 Suzy 56 这是我想要的输出 Name X_Age Cohort Mike 55 50-59 July 64 60-69 Fay 76

我与50岁以上的高级客户建立了以下数据框架

西尼尔斯达

Name      X_Age 
Mike       55
July       64
Fay        76
Martin     93
Zack       54
Jenny      83
Suzy       56
这是我想要的输出

Name      X_Age    Cohort
Mike       55       50-59
July       64       60-69
Fay        76       70-79
Martin     93       90+
Zack       54       50-59
Jenny      83       80-89
Suzy       56       50-59
我试图在命令和变异时使用case,但出于某种原因,队列列都是NA的

a <- seniorsdata %>% mutate(Cohort = case_when(X_Age <= 50 & X_Age > 60 ~ '50-59',
                                          X_Age <= 60 & X_Age > 70 ~ '60-69',
                                          X_Age <= 70 & X_Age > 80 ~ '70-79',
                                          X_Age <= 80 & X_Age > 90 ~ '80-89',
                                          X_Age <= 90 & X_Age > 999 ~ '90+'
))
a%突变(队列=病例组,年龄60~50-59岁,
X_年龄70~60-69岁,
X_年龄80~70-79岁,
X_年龄90~80-89岁,
X_年龄999~'90+'
))

我做错了什么

指定条件的方式不理想。请参阅以下内容

library(dplyr)

dat2 <- dat %>%
  mutate(Cohort = case_when(
    X_Age >= 50 & X_Age < 60 ~ '50-59',
    X_Age >= 60 & X_Age < 70 ~ '60-69',
    X_Age >= 70 & X_Age < 80 ~ '70-79',
    X_Age >= 80 & X_Age < 90 ~ '80-89',
    X_Age >= 90              ~ '90+',
    TRUE                     ~ NA_character_
  ))
dat2
#     Name X_Age Cohort
# 1   Mike    55  50-59
# 2   July    64  60-69
# 3    Fay    76  70-79
# 4 Martin    93    90+
# 5   Zack    54  50-59
# 6  Jenny    83  80-89
# 7   Suzy    56  50-59
库(dplyr)
dat2%
突变(队列=病例)(
X_年龄>=50&X_年龄<60~'50-59',
X_年龄>=60&X_年龄<70~'60-69',
X_年龄>=70&X_年龄<80~'70-79',
X_年龄>=80&X_年龄<90~'80-89',
X_年龄>=90~'90+',
真~NA_性格_
))
dat2
#姓名X_年龄组
#1迈克55 50-59
#2004年7月2日60-69
#3费伊7670-79
#4马丁9390+
#5扎克54 50-59
#6詹妮83 80-89
#7苏西56 50-59
数据

dat <- read.table(text = "Name      X_Age 
Mike       55
July       64
Fay        76
Martin     93
Zack       54
Jenny      83
Suzy       56",
                header = TRUE, stringsAsFactors = FALSE)

dat而不是使用
case\u当
您可能想使用
cut
函数时,您的方法似乎是错误的。我想你想要的东西更像
xuage>=50&xuage<60
。因为现在你的标准不符合。没有同时小于50岁和大于60岁的年龄。你所有的条件都是错误的。
X_Age
怎么可能小于或等于50而大于60?非常感谢,我意识到我做错了什么。我很感激!