在R中过滤多个时间序列值

在R中过滤多个时间序列值,r,filter,time-series,tidyverse,R,Filter,Time Series,Tidyverse,我有一个时间序列的问题,我不知道如何解决 我有一个包含4个不同变量的TIBLE。在我的真实数据集中,有超过10000个文档 document date author label 1 2018-04-05 Mr.X 1 2 2018-02-05 Mr.Y 0 3 2018-04-17

我有一个时间序列的问题,我不知道如何解决

我有一个包含4个不同变量的TIBLE。在我的真实数据集中,有超过10000个文档

document   date             author            label
1          2018-04-05       Mr.X                    1
2          2018-02-05       Mr.Y                    0
3          2018-04-17       Mr.Z                    1
因此,现在我的问题是,在第一步中,我想计算我的文章,这些文章发生在我的时间序列中的每个月的特定月份和特定年份。我知道我可以过滤一年中的特定月份,如下所示:

tibble%>%
filter(date > "2018-02-01" && date < "2018-02-28")
tibble%>%
过滤器(日期>“2018-02-01”和日期<“2018-02-28”)
由此产生的结果将是一个带有1个观察值的TIBLE,但我的问题是,我的数据中有360个不同的时间段。我可以为此编写一个函数来解决此问题,还是需要自己进行计算

对我来说,最好的解决方案是一个包含360个不同列的表格,其中每个列都表示本月统计的文章数量。这可能吗


提前非常感谢。

如果您想将每个结果单独列在一个列表中,您可以这样做

suppressMessages(库(dplyr))
df%>%变异(日期=as.date(日期))%>%
分组(substr(日期,1,7),.keep=F)
>[2]>
[[1]]
#一个tibble:1 x 4
文档日期作者标签
1 2 2018-02-05 Y先生0
[[2]]
#一个tibble:2x4
文档日期作者标签
1 2018-04-05 X先生1
2 3 2018-04-17 Z先生1

您还可以进一步使用
list2env()
将此列表中的每个项目保存为单独的项目。

如果希望将每个结果保存到单独的列表中,可以执行以下操作

suppressMessages(库(dplyr))
df%>%变异(日期=as.date(日期))%>%
分组(substr(日期,1,7),.keep=F)
>[2]>
[[1]]
#一个tibble:1 x 4
文档日期作者标签
1 2 2018-02-05 Y先生0
[[2]]
#一个tibble:2x4
文档日期作者标签
1 2018-04-05 X先生1
2 3 2018-04-17 Z先生1

您可以进一步使用
list2env()
将此列表中的每个项目保存为单独的项目。

要计算每个月-年组合的行数,在
tidyverse
中,您可以执行以下操作:

library(dplyr)
library(tidyr)

df %>%
  mutate(date = as.Date(date), 
         year_mon = format(date, '%Y-%m')) %>%
  select(year_mon) %>%
  pivot_wider(names_from = year_mon, values_from = year_mon, 
              values_fn = length, values_fill = 0)

#   `2018-04` `2018-02`
#      <int>     <int>
#1         2         1
库(dplyr)
图书馆(tidyr)
df%>%
变异(日期=as.date(日期),
年份月份=格式(日期,%Y-%m'))%>%
选择(年/月)%>%
透视图(名称从=年份从=年份从,值从=年份从,
值\ fn=长度,值\填充=0)
#   `2018-04` `2018-02`
#           
#1         2         1
在R基中:

df$date <- as.Date(df$date)
table(format(df$date, '%Y-%m'))

df$date要计算每个月-年组合的行数,在
tidyverse
中,您可以执行以下操作:

library(dplyr)
library(tidyr)

df %>%
  mutate(date = as.Date(date), 
         year_mon = format(date, '%Y-%m')) %>%
  select(year_mon) %>%
  pivot_wider(names_from = year_mon, values_from = year_mon, 
              values_fn = length, values_fill = 0)

#   `2018-04` `2018-02`
#      <int>     <int>
#1         2         1
库(dplyr)
图书馆(tidyr)
df%>%
变异(日期=as.date(日期),
年份月份=格式(日期,%Y-%m'))%>%
选择(年/月)%>%
透视图(名称从=年份从=年份从,值从=年份从,
值\ fn=长度,值\填充=0)
#   `2018-04` `2018-02`
#           
#1         2         1
在R基中:

df$date <- as.Date(df$date)
table(format(df$date, '%Y-%m'))

df$date抱歉,我需要将每个项目作为一个单独的列表,最好是整数,即特定月份的文档数量。您能否就给定的样本数据提供所需的结果?我无法理解,尽管我已经给出了一个解决方案,将其分为不同的时间段。这不是按照你的要求吗?对不起,我需要每一个项目作为一个单独的列表,最好是整数,在特定的月份有多少文件被计数。你能提供关于给定样本数据的预期结果吗?我无法理解,尽管我已经给出了一个解决方案,将其分为不同的时间段。这不符合您的要求吗?但如果我的文档列是格式字符,而我的日期列是格式日期,这对我也是可能的吗?是的,请参见编辑后的答案。但是如果我的文档列是格式字符,而我的日期列是格式日期,这对我也是可能的吗?是的,请参见编辑后的答案。