我正在使用出色的nanotime
包来存储我的时间戳,但是当我的tibble
包含缺少的值时,我无法使该包正常工作。
考虑此:
library(nanotime)
library(tibble)
library(dplyr)
tibble(time = c('2020-01-01 10:10:10.123456',
NA,
'2020-01-01 10:10:10.123456')) %>%
mutate(enhance = nanotime(time,
tz = 'GMT',
format = '%Y-%m-%d %H:%M:%E9S'))
Error in RcppCCTZ::parseDouble(x, fmt = format, tz = tz) :
Parse error on NA
我在这里想念什么?不幸的是,无法使用na.rm = TRUE
。
谢谢!
问题是NA
属于逻辑类型,您需要在同一类型的列中具有所有值。我们可以使用as.integer64
将逻辑NA
替换为integer64
NA
。
library(nanotime)
tbl <- tibble::tibble(time = c('2020-01-01 10:10:10.123456',
NA,
'2020-01-01 10:10:10.123456'))
tbl$enhance <- as.integer64(NA)
tbl$enhance[!is.na(tbl$time)] <- nanotime(na.omit(tbl$time), tz = 'GMT',
format = '%Y-%m-%d %H:%M:%E9S')
nanotime(tbl$enhance)