我会更好地解释问题。我从数据库中下载了大约300,000次观测,时间跨度为16年。 我希望通过考虑完整性来对数据库进行子集化。
示例:假设3个不同的项目(A,B和C)和5年的时间框架。
对于项目A,我从第1年到第5年有观察;对于项目B,我有1,2,4,5年的观察结果;从项目C开始,我只有3年级。
我想对数据集进行子集化,以便新数据集只包含项目A.
如何将其转换为代码?
答案 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)
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的行。