r - 使用mutate时发生错误,当charToDate(x)中出现错误时出现case_when

标签 r error-handling dplyr

我正在尝试使用case when和mutate来修改数据库中现有列的情况。
例:

id:c(1,2,3,4,5,6,7,8,...)
类型:c('x', 'y', 'unknown')-3级

Date_of_regsitering (2011-06-03, NA, NA, 2017-05-02, NA, NA, 2012-05-02...)
只有某些观察结果具有该日期。

报名日期(NA, NA, 2015-04-03, NA, 2012-08-02, 2010-05-01...)
只有某些观察结果具有该日期。

我想根据是否有“注册日期”或“注册日期”来更改“类型”列中的任何“未知”,换句话说,只要“日期”列中有日期而不是不适用然后将“类型”列中的“未知”之一更改为x或y:

我在R studio中构造了以下代码:

Df <- Df %>%
    mutate(Type = case_when(Type='unknown'& Date_of_registering !='NA'~'x',
                            Type='unknown'& Date_of_enrollment!='NA' ~ 'y',
                            TRUE ~ Type))

但是我收到以下错误消息:
Error in charToDate(x) : 
  character string is not in a standard unambiguous format

怎么了?

最佳答案

这里有两个主要问题,那就是应该使用两个相等的符号而不是一个符号来进行评估,并且在确定列是否为NA时最好使用is.na(x)。

以下代码可以解决该问题。

id <- c(1,2,3,4,5,6,7,8)
Type <- c('x', 'y', 'unknown', 'x', 'y', 'unknown', 'x', 'unknown')
Date_of_registering <- as.Date(c("2011-06-03", NA, "2017-05-02", NA, NA, NA, "2012-05-02", NA))
Date_of_enrollment <- as.Date(c(NA, NA, "2015-04-03", NA, "2012-08-02", "2010-05-01", NA, NA))

Df <-
  data.frame(id, Type, Date_of_registering, Date_of_enrollment, stringsAsFactors = FALSE) %>%
  mutate(new_type = 
           case_when(Type == 'unknown' & !is.na(Date_of_registering) ~ 'x',
                     Type == 'unknown' & !is.na(Date_of_enrollment) ~ 'y',
                     TRUE ~ Type))

关于r - 使用mutate时发生错误,当charToDate(x)中出现错误时出现case_when,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59178527/

相关文章:

r - 如何使用 dplyr 管道一次性取消嵌套数据帧的多个列表列

R:如何使用带有向量作为可选参数的as.call?

r 神经网络包——多输出

r - 如何基于两列合并多个数据框?

testing - 随机场景端到端测试

javascript - 尝试通过 AWS Pinpoint 发送语音消息时找不到资源

php - PHP错误处理: my code is not optimized

r - dplyr Pipes - 如何更改原始数据框

r - 由强制引起的 NA _ 平均值和 SD _ 百分比

r - R 中高清动画视频的最佳实践