Итак, у меня есть эта очень странная ситуация. С R и преобразованием даты с функцией as.Date(). Самое странное, что инструкция ifelse не работает, поскольку она должна работать.R dplyr mutate не работает с as.Date (NA) 'origin' должно быть поставлено
Так ситуация:
Я хочу, чтобы извлечь дату из числа, но застрял на тех ситуациях, когда происходит NA. Если я применяю as.Date (NA), я не получаю никаких ошибок. Но странные вещи начинаются с dataFrames.
Вот пример:
###### create temp data.frame
t1 <- data.frame(dateNum = c(6000,6001,NA))
##### First attempt: straight ############
t2 <- t1 %>% dplyr::mutate(
dateConverted = as.Date(dateNum)
)
##### Second attempt: ifelse statement ############
t2 <- t1 %>% mutate(
dateConverted = ifelse(is.na(dateNum),NA,as.Date(dateNum))
)
##### Third attempt: ifelse statement for number 6000 ############
t2 <- t1 %>% mutate(
naValue = is.na(dateNum),
dateFixed = ifelse(naValue,6000,dateNum),
dateConverted = ifelse(naValue,NA,as.Date(dateFixed))
)
А вот выход. С ошибками «происхождения» должны быть поставлены
> ###### create temp data.frame
> t1 <- data.frame(dateNum = c(6000,6001,NA))
>
> ##### First attempt: straight ############
> t2 <- t1 %>% dplyr::mutate(
+ dateConverted = as.Date(dateNum)
+) Error in as.Date.numeric(c(6000, 6001, NA)) : 'origin' must be supplied
>
> ##### Second attempt: ifelse statement ############
> t2 <- t1 %>% mutate(
+ dateConverted = ifelse(is.na(dateNum),NA,as.Date(dateNum))
+) Error in as.Date.numeric(c(6000, 6001, NA)) : 'origin' must be supplied
>
> ##### Third attempt: ifelse statement for number 6000 ############
> t2 <- t1 %>% mutate(
+ naValue = is.na(dateNum),
+ dateFixed = ifelse(naValue,6000,dateNum),
+ dateConverted = ifelse(naValue,NA,as.Date(dateFixed))
+) Error in as.Date.numeric(c(6000, 6001, 6000)) : 'origin' must be supplied
>
как @Kara Woo сказал, что источник происхождения и ваш код будут работать, например: 't1%>% mutate (dateNum = as.Date (dateNum, origin =" 2000-12-31 "))' – count
Да Вы верный. Это была моя ошибка. – aeliv002