【问题标题】:nested ifelse in mutate won't recognise is.na statementmutate 中的嵌套 ifelse 无法识别 is.na 语句
【发布时间】:2021-07-17 10:23:26
【问题描述】:

我试图将一些观察结果分类为一个日期列是在 R 中的另一个日期列之前还是之后。

数据表:merge_data

两个日期列:case_plan_start_date、date_made

我想将带有 NA 日期的观察分为两类:缺少开始日期或缺少法定日期

我使用了如下所示的 mutate 和 ifelse 函数,它似乎对所有函数都有效,除了第 2 行所说的 is.na(CP_time)。每当我使用 mutate/ifelse 时似乎就是这种情况,它不会识别我的第二个。没有声明。

它将归类为“缺少开始日期”,但对于那些缺少 NA 法定日期的人,它甚至不会归类为“未知”,而是显示为 NA。

如果有人能找到更好或正确的方法,那就太好了。

merge_data_t  <- merge_data %>%
  mutate(CP_time = lubridate::time_length(difftime(case_plan_start_date, date_made),"days"),

        flag_time_CP = ifelse(is.na(CP_time) & (is.na(case_plan_start_date) | case_plan_start_date == ""), "Missing start date", 
                        ifelse(is.na(CP_time), "Missing legal order",
                        ifelse(CP_time < 0, "before order date",
                        ifelse(CP_time == 0, "same date as order date",
                        ifelse(CP_time > 0, "after order date", "unknown")))))

【问题讨论】:

标签: r


【解决方案1】:

您似乎想在这里使用case_when

merge_data_t  <- merge_data %>%
  mutate(CP_time = lubridate::time_length(difftime(case_plan_start_date, date_made),"days"),

        flag_time_CP = case_when(
                          is.na(CP_time) & (is.na(case_plan_start_date) | case_plan_start_date == "") ~ "Missing start date", 
                          is.na(CP_time) ~ "Missing legal order",
                          CP_time < 0 ~ "before order date",
                          CP_time == 0 ~ "same date as order date",
                          CP_time > 0 ~ "after order date", "unknown"))

【讨论】:

    猜你喜欢
    • 2013-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多