Извлечение одинаковых строк из нескольких df и создание новых df - PullRequest
0 голосов
/ 22 июня 2019

Я хочу извлечь 13 строк из моих фреймов данных (разные годы, все равны). А затем создайте новый df только с этими 13 строками для каждого года. Есть ли способ решить это с помощью цикла? Или применить его к списку df´s?

Это отлично работает, но я не хочу применять его каждый год:

bezirke_abs12 <- Year_ABS3[c(1, 13, 23, 41, 60, 71, 81, 90, 102, 124, 135, 149, 164), ]

1 Ответ

0 голосов
/ 22 июня 2019

Сначала вам нужно составить список ваших объектов, а затем применить к нему фильтр:

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]
...