表函数没有';t适用于日期类别为R的日期

表函数没有';t适用于日期类别为R的日期,r,dplyr,tidyverse,R,Dplyr,Tidyverse,我很好奇为什么没有一个问题与这个问题类似(怀疑它是否因为我的R控制台中的某些东西而不起作用,但它似乎不起作用),但这里就是它。数据: df <- structure(c("17532", "17577", "17579", "17593", "17599", "17599", "17599", "17599", "17599", "17599", "17599", "17599", "17599", "17599", "17599", "17599", "17599", "17599"

我很好奇为什么没有一个问题与这个问题类似(怀疑它是否因为我的R控制台中的某些东西而不起作用,但它似乎不起作用),但这里就是它。数据:

df <- structure(c("17532", "17577", "17579", "17593", "17599", "17599", 
"17599", "17599", "17599", "17599", "17599", "17599", "17599", 
"17599", "17599", "17599", "17599", "17599", "17599", "17599", 
"17599", "17599", "17599", "17599", "17599", "17599", "17599", 
"17599", "17599", "17599", "17599", "17599", "17599", "17599", 
"17599", "17599", "17599", "17599", "17599", "17599", "17599", 
"17599", "17599", "17599", "17599", "17599", "17599", "17599", 
"17599", "17599", "17599", "17599", "17599", "17599", "17599", 
"17599", "17599", "17599", "17599", "17599", "17599", "17599"
), class = "Date")

table(df)
> .
> 2018-01-01 2018-02-15 2018-02-17 2018-03-03 2018-03-09 
>          0          0          0          0          0 
数据是每天注册的,因此您可以假设每个日期的时间为
00:00:00+00:00

这是迄今为止字符向量转换的代码:

df$fecha <- df$fecha %>% as.Date()
df$fecha%as.Date()

日期存储为整数,而不是您指定的字符

df <- as.Date(c(17532L, 17577L, 17579L, 17593L, 17599L, 17599L, 17599L, 17599L, 
        17599L, 17599L, 17599L, 17599L, 17599L, 17599L, 17599L, 17599L, 
        17599L, 17599L, 17599L, 17599L, 17599L, 17599L, 17599L, 17599L, 
        17599L, 17599L, 17599L, 17599L, 17599L, 17599L, 17599L, 17599L, 
        17599L, 17599L, 17599L, 17599L, 17599L, 17599L, 17599L, 17599L, 
        17599L, 17599L, 17599L, 17599L, 17599L, 17599L, 17599L, 17599L, 
        17599L, 17599L, 17599L, 17599L, 17599L, 17599L, 17599L, 17599L, 
        17599L, 17599L, 17599L, 17599L, 17599L, 17599L), origin = "1970-01-01")
table(df)
# df
# 2018-01-01 2018-02-15 2018-02-17 2018-03-03 2018-03-09 
#          1          1          1          1         58 

df
Date
s有点奇怪,
table
。我只要做
表格(as.character(df))
就可以了,不用太担心了。克里斯,是什么给了你这种格式的日期向量?我找不到一个数据库或文件导入方法,它告诉你它给了你一个合法的
日期
-类对象,但是内部存储有
字符
。lubridate的函数
不是
as.Date
?同样,我无法将原始数据复制到所示的结构。这是一个有趣的问题,但如果能准确地追踪到这是如何发生的,那就太好了。虽然
as.Date
-vs-
as_Date
这件事很奇怪,但我也无法用它们中的任何一个或我所知道的任何其他与日期相关的函数重现这种现象。此外,根据@Gregor的评论,虽然
Date
s有点奇怪,但我从来没有想到会出现这种行为……有趣的是,它显示为日期,尽管日期操作似乎不起作用(例如,
df+1
应该在日期上起作用)。这是基于
print.Date
调用
format.Date
调用
as.POSIXlt.Date
,其中包括
.Internal(Date2POSIXlt(x))
,其中包括
x=compressivector(CAR(args),REALSXP)
(in)。因此,对于演示来说,非数字日期在某种程度上被内部转换为numeric.nice的尝试所掩盖。字母L能起到什么作用:)@Tjebo
L
是不必要的-删除所有的L,这也会起作用。它们的关键区别在于缺少引号,所以数字实际上是数字,而不是字符串。
df <- as.Date(c(17532L, 17577L, 17579L, 17593L, 17599L, 17599L, 17599L, 17599L, 
        17599L, 17599L, 17599L, 17599L, 17599L, 17599L, 17599L, 17599L, 
        17599L, 17599L, 17599L, 17599L, 17599L, 17599L, 17599L, 17599L, 
        17599L, 17599L, 17599L, 17599L, 17599L, 17599L, 17599L, 17599L, 
        17599L, 17599L, 17599L, 17599L, 17599L, 17599L, 17599L, 17599L, 
        17599L, 17599L, 17599L, 17599L, 17599L, 17599L, 17599L, 17599L, 
        17599L, 17599L, 17599L, 17599L, 17599L, 17599L, 17599L, 17599L, 
        17599L, 17599L, 17599L, 17599L, 17599L, 17599L), origin = "1970-01-01")
table(df)
# df
# 2018-01-01 2018-02-15 2018-02-17 2018-03-03 2018-03-09 
#          1          1          1          1         58