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转换为数据帧,但还有更可行的想法吗?
答案 0 :(得分:3)
data.frame
与tibble/data_frame
之间的行为可能存在差异。使用data.frame
,drop = 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