【问题标题】:Filtering multiple time series values in R在 R 中过滤多个时间序列值
【发布时间】:2021-07-27 13:32:45
【问题描述】:

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

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

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")

由此产生的结果将是一个带有 1 个观察的小标题,但我的问题是我的数据中有 360 个不同的时间段。我可以为此编写一个函数来解决这个问题还是我需要自己进行 360 计算?

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

非常感谢您。

【问题讨论】:

  • 对不起,我需要将每个项目作为一个单独的列表,最好使用整数在特定月份计算多少文档。
  • 您能否就给定的样本数据提供期望的结果?我无法理解
  • 虽然我已经给出了一个解决方案,可以将其拆分为不同的时间段。不符合你的要求吗?

标签: r filter time-series tidyverse


【解决方案1】:

如果你想把每个结果放到一个单独的列表中,你可以这样做

suppressMessages(library(dplyr))

df %>% mutate(date = as.Date(date)) %>%
  group_split(substr(date, 1, 7), .keep = F)

<list_of<
  tbl_df<
    document: integer
    date    : date
    author  : character
    label   : integer
  >
>[2]>
[[1]]
# A tibble: 1 x 4
  document date       author label
     <int> <date>     <chr>  <int>
1        2 2018-02-05 Mr.Y       0

[[2]]
# A tibble: 2 x 4
  document date       author label
     <int> <date>     <chr>  <int>
1        1 2018-04-05 Mr.X       1
2        3 2018-04-17 Mr.Z       1

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

【讨论】:

  • 但是如果我的文档列是格式字符并且我的日期列是格式日期,这对我来说也可以吗?
【解决方案2】:

要计算每个月-年组合的行数,您可以在 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

在基础 R 中:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-06
    • 1970-01-01
    • 2020-08-24
    • 2014-02-05
    • 2017-11-22
    • 1970-01-01
    相关资源
    最近更新 更多