我想从我的数据框中提取13行(不同年份,都相等)。然后,每年仅用这13行创建一个新的df。 有没有办法解决这个问题? 还是将其应用到df的列表中?
这很好用,但我不想每年都使用它:
bezirke_abs12 <- Year_ABS3[c(1, 13, 23, 41, 60, 71, 81, 90, 102, 124, 135, 149, 164), ]
答案 0 :(得分:0)
首先,您需要列出对象列表,然后对其应用过滤器:
years <- ls(pattern = "^Year")
filter.values <- c(1, 13, 23, 41, 60, 71, 81, 90, 102, 124, 135, 149, 164)
lapply(years, function(x) {
assign(paste0(x, "_output"), get(x)[filter.values, ], envir = globalenv())
})
但是,我不建议您这样做。
相反,您可以使用data.table::rbinlist()
和idcol
参数将数据集合并为一个。
您的所有数据都整齐地放在data.frame
或data.table
中,这一点要干净得多。
您可以执行以下操作:
library(data.table)
year.names <- ls(pattern = "^Year_\\d$")
years <- lapply(year.names, get)
names(years) <- year.names
years <- rbindlist(years, idcol = "year")
years[, rn := 1:.N, by = year]
res <- years[rn %in% filter.values]