nanotime:如何在小事中处理NA?

问题描述 投票:0回答:1

我正在使用出色的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

谢谢!

r datetime timestamp biginteger nanotime
1个回答
1
投票

问题是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)
© www.soinside.com 2019 - 2024. All rights reserved.