【问题标题】:Filter time series data based on a condition R using dplyr使用 dplyr 根据条件 R 过滤时间序列数据
【发布时间】:2017-06-22 18:33:04
【问题描述】:

我有一个时间序列数据,如下所示。

                         keyword             byMonth        n_views
business tax preparation software           Dec-2016              5
    corporate income tax solution           Nov-2016              3
    corporate income tax solution           Mar-2017              2
          corporate tax provision           Dec-2016              5
          corporate tax provision           Oct-2016              1
                  data collection           Mar-2017             39
                  data collection           May-2017             26
                  data collection           Apr-2017             22
                  data collection           Feb-2017             15
                  data collection           Jan-2017             15
                  data collection           Nov-2016             13
                  data collection           Dec-2016              7
                  data collection           Oct-2016              6

我只想使用 dplyr 或任何其他方便的方法选择 2016 年 10 月至 2017 年 5 月期间的 keywords。所以在这种情况下,只有与Keyword: data collection 相关的观察结果应该是输出。我很难弄清楚这一点。非常感谢。

【问题讨论】:

  • 第 5 行也是Oct-2016corporate tax provision 也会被包括进来吗?
  • 不,只有从 2016 年 10 月到 2017 年 5 月期间存在的关键字。不只是几个月。所以,输出只有data collection

标签: r dplyr time-series


【解决方案1】:

我们可以使用dplyrtidyr 中的函数。 dt2中的关键字是全月覆盖的案例。

library(dplyr)
library(tidyr)

dt2 <- dt %>%
  # Spread the data frame
  spread(byMonth, n_views) %>%
  # Filter rows without any NA
  filter(rowSums(!is.na(.)) == ncol(.))

更新:将数据框转换回原始格式

如果需要原始格式,我们可以使用gather将其转换回来。

dt3 <- dt2 %>%
  gather(byMonth, n_views, -keyword)

数据准备

dt <- read.table(text = "                        keyword             byMonth        n_views
'business tax preparation software'           'Dec-2016'              5
               'corporate income tax solution'           'Nov-2016'              3
               'corporate income tax solution'           'Mar-2017'              2
               'corporate tax provision'           'Dec-2016'              5
               'corporate tax provision'           'Oct-2016'              1
               'data collection'           'Mar-2017'             39
               'data collection'           'May-2017'             26
               'data collection'           'Apr-2017'             22
               'data collection'           'Feb-2017'             15
               'data collection'           'Jan-2017'             15
               'data collection'           'Nov-2016'             13
               'data collection'           'Dec-2016'              7
               'data collection'           'Oct-2016'              6",
               header = TRUE, stringsAsFactors = FALSE)

【讨论】:

  • 我正在删除我的答案,因为这似乎是提问者真正想要的。
  • 好主意,但我正在使用输出来绘制面积图并使用 byMonth 作为 x 轴。所以这无济于事。 :(
  • @KrishnangKDalal 请查看我的更新。过滤完成后,我们可以将格式转换回来。
  • 干杯!非常感谢:)
猜你喜欢
  • 1970-01-01
  • 2018-07-10
  • 2023-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-06
  • 2013-09-06
  • 1970-01-01
相关资源
最近更新 更多