【问题标题】:Keep completeness of record when subsetting time series datasets in R在 R 中对时间序列数据集进行子集化时保持记录的完整性
【发布时间】:2017-01-31 06:26:54
【问题描述】:

我会更好地解释这个问题。我从一个数据库中下载了 16 年时间跨度的大约 300,000 个观测值。 我想通过考虑完整性来对数据库进行子集化。

  • 我只想保留年份完整的观察结果。

示例:假设 3 个不同的项目(A、B 和 C)和 5 年的时间范围。

对于 A 项,我从第 1 年到第 5 年进行了观察;对于 B 项,我有 1、2、4、5 年的观察结果;从 C 项开始,我只有 3 年。

我想对数据集进行子集化,以便新数据集仅包含项目 A。

我怎样才能把它翻译成代码?

【问题讨论】:

  • 你能提供一些示例数据吗?

标签: r statistics time-series subset


【解决方案1】:

简单来说,没看过数据,

name <- c('a', 'a', 'a', 'a', 'a', 'b', 'b', 'b', 'b', 'c')
year <- c(1, 2, 3, 4, 5, 1, 2, 4, 5, 3)
data <- data.frame(name, year)

tmp <- aggregate(year ~ name, data, length)
tmp1 <- subset(tmp, year >=5)

【讨论】:

    【解决方案2】:

    使用 data.table 的解决方案

    require(data.table)
    
    name <- c('a', 'a', 'a', 'a', 'a', 'b', 'b', 'b', 'b', 'c')
    year <- c(1, 2, 3, 4, 5, 1, 2, 4, 5, 3)
    data <- data.table(name, year)
    
    name.count <- data[, .N, by = name]
    name.keep <- name.count[N >= 5, name]
    data.subset <- data[name %chin% name.keep]
    

    您可以在子集步骤之前使用 data &lt;- data[complete.cases(data)] 来删除包含 NA 的行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-13
      • 2019-09-26
      • 2018-06-04
      • 1970-01-01
      • 1970-01-01
      • 2021-12-03
      • 2016-09-10
      • 1970-01-01
      相关资源
      最近更新 更多