在R中对时间序列数据集进行子集时,保持记录的完整性

时间:2016-09-22 15:25:55

标签: r statistics time-series subset

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

  • 我想只保留年度完成的观察结果。

示例:假设3个不同的项目(A,B和C)和5年的时间框架。

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

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

如何将其转换为代码?

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:0)

使用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 <- data[complete.cases(data)]来删除包含NA的行。