如何比较2个小时之间的日期?

时间:2018-02-17 10:40:51

标签: r dataframe tibble

mydf<-data.frame(x=as.Date("2017-1-1"))
mydf[1,1]-as.Date("2017-10-16")

Time difference of -288 days

mytb<-tibble(x=as.Date("2017-1-1"))
mytb[1,1]-as.Date("2017-10-16")

Error in mytb[1, 1] - as.Date("2017-10-16") : non-numeric argument to binary operator In addition: Warning message: Incompatible methods ("Ops.data.frame", "-.Date") for "-"

如何比较tibble中的日期?我有一个解决方案:将tibble转换为数据帧,但还有更可行的想法吗?

1 个答案:

答案 0 :(得分:3)

data.frametibble/data_frame之间的行为可能存在差异。使用data.framedrop = TRUE

mydf[1,1]
#[1] "2017-01-01"
当存在单行/列等子集时,

data.frame更改为vector

但是,tibble

并非如此
mytb[1,1]
# A tibble: 1 x 1
#  x         
#   <date>    
#1 2017-01-01

它仍然是tibble。因此,我们需要使用$[[

来提取它
mytb[['x']][1]
#[1] "2017-01-01"

tidyverse选项为pull

mytb %>%
     pull(x) %>%
     magrittr::extract(1) %>%
     magrittr::subtract(as.Date("2017-10-16"))
#Time difference of -288 days