我正在尝试使用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/