3
所以我有這個非常奇怪的情況。使用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
>
as @Kara Woo表示提供一個原點並且您的代碼可以工作,例如:'t1%>%mutate(dateNum = as.Date(dateNum,origin =「2000-12-31」))' – count
是的您是正確。那是我的錯誤。 – aeliv002