gpt4 book ai didi

R dplyr mutate 不适用于 as.Date(NA) 'origin' 必须提供

转载 作者:行者123 更新时间:2023-12-04 12:36:33 26 4
gpt4 key购买 nike

所以我有这个非常奇怪的情况。使用 R 和日期转换与 as.Date() 函数。最奇怪的是 ifelse 语句无法正常工作。

所以情况:

我想从数字中提取日期,但卡在发生 NA 的情况下。
如果我申请 as.Date(NA) 我不会收到任何错误。但是奇怪的事情始于数据帧。

这是示例:

###### 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
>

最佳答案

问题不在于 NA或使用 dplyr,它与您的数字数据有关。来自 ?as.Date :

'as.Date' will accept numeric data (the number of days since an epoch), but only if 'origin' is supplied.



您正在传递函数数值(6000 和 6001),但没有关于它们代表什么的信息。 as.Date()会将这些值视为自起源以来的天数,但您尚未提供计算依据的起源。

关于R dplyr mutate 不适用于 as.Date(NA) 'origin' 必须提供,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35661680/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com