我有一个适当的POSIXct格式的变量,用ymd_hms(DateTime){lubridate}转换。 但是,在转换之后,变量将丢失其POSIXct格式:
daily$DateTime<- ifelse(daily$ID %in% "r1_1"|daily$ID %in% "r1_2",
NA,daily$DateTime)
我尝试使用lubridate将变量再次转换为POSIXct,但似乎它不喜欢NA,此外,现在变量DateTime有一个num格式,lubridate不会将其识别为日期和时间格式(例如1377419400)。
请在ID == r1_1和r1_2时将所需的转换转换为NA DateTime的任何帮助
由于
答案 0 :(得分:2)
设置NA
值的惯用方法是使用is.na<-
,大多数类(包括日期)都将得到适当处理
is.na(daily$DateTime) <- daily$ID %in% c('r1_1', 'r1_2')
应该做的伎俩。
使用?as.POSIXct
中的示例 ## SPSS dates (R-help 2006-02-16)
z <- c(10485849600, 10477641600, 10561104000, 10562745600)
zz <- as.POSIXct(z, origin = "1582-10-14", tz = "GMT")
is.na(zz) <- c(FALSE, TRUE, FALSE, FALSE)
zz
# [1] "1915-01-26 GMT" NA "1917-06-15 GMT" "1917-07-04 GMT"
答案 1 :(得分:2)
以下内容应该有效:
daily <- data.frame(DateTime = seq(Sys.time(), length.out=10, by=1000), ID=rep(1:2,5))
daily$DateTime[daily$ID%in%2]<-NA
(尽管使用is.na&lt; - 的解决方案也很好。只有设置is.na的一般逻辑没有多大意义 - 但只要你确定事情没有,那就没问题了太复杂了。)
ifelse
进行了一些隐式转换,所以我认为永远不可能使用ifelse
保留日期类。