R无限日期与文本混合
R infinity dates mixed with text
我正在尝试以一种与 中描述的无限日期值相对应的方式来解释 PostgreSQL 中的无限日期。但是,我无法让代码正常工作。
df <- data.frame(dates = c("2012-08-06", "2014-05-05", 'infinity', '-infinity',as.character(Sys.Date())))
convertime <- function(x){
time <- ifelse(
x == 'infinity',
as.POSIXct(Inf, origin="1970-01-01"),
ifelse(
x == '-infinity',
as.POSIXct(-Inf, origin="1970-01-01"),
as.POSIXct(x)
)
)
return(time)
}
df$time <- convertime(df$dates)
这会产生以下错误:
Error in as.POSIXlt.character(as.character(x), ...) :
character string is not in a standard unambiguous format
有什么想法吗?
ifelse
构造它的每个可能值,并在 as.POSIXct("infinity")
.
上出错
相反,尝试
converttime <- function(x,o="1970-01-01",posinf="infinity",neginf="-infinity"){
xc <- x
xc[x%in%c(posinf,neginf)] <- NA
d <- as.POSIXct(xc, origin=o)
d[x==posinf] <- as.POSIXct(Inf, origin=o)
d[x==neginf] <- as.POSIXct(-Inf, origin=o)
d
}
d <- converttime(df$dates)
d[3] > d[4] # TRUE
我正在尝试以一种与
df <- data.frame(dates = c("2012-08-06", "2014-05-05", 'infinity', '-infinity',as.character(Sys.Date())))
convertime <- function(x){
time <- ifelse(
x == 'infinity',
as.POSIXct(Inf, origin="1970-01-01"),
ifelse(
x == '-infinity',
as.POSIXct(-Inf, origin="1970-01-01"),
as.POSIXct(x)
)
)
return(time)
}
df$time <- convertime(df$dates)
这会产生以下错误:
Error in as.POSIXlt.character(as.character(x), ...) :
character string is not in a standard unambiguous format
有什么想法吗?
ifelse
构造它的每个可能值,并在 as.POSIXct("infinity")
.
相反,尝试
converttime <- function(x,o="1970-01-01",posinf="infinity",neginf="-infinity"){
xc <- x
xc[x%in%c(posinf,neginf)] <- NA
d <- as.POSIXct(xc, origin=o)
d[x==posinf] <- as.POSIXct(Inf, origin=o)
d[x==neginf] <- as.POSIXct(-Inf, origin=o)
d
}
d <- converttime(df$dates)
d[3] > d[4] # TRUE