Если вы ищете один фрейм данных, в котором столбцы year
, Company.name
и столбец, содержащий список, каждый из элементов которого является фреймом данных, содержащим строки для этого года и Company.name, то:
library(dplyr)
library(purrr)
library(tidyr)
ls(pattern = "^advisors\\d{4}$", envir = .GlobalEnv) %>%
mget(envir = .GlobalEnv) %>%
map_dfr(as.data.frame.matrix, .id = "year") %>%
mutate(year = sub("advisors", "", year) %>% as.numeric) %>%
nest(-c(year, Company.name))
дает:
# A tibble: 6 x 3
year Company.name data
<dbl> <fct> <list>
1 2015. VOLKSWAGEN AG <data.frame [3 x 3]>
2 2015. ROYAL DUTCH SHELL PLC <data.frame [4 x 3]>
3 2015. BP PLC <data.frame [1 x 3]>
4 2016. VOLKSWAGEN AG <data.frame [3 x 3]>
5 2016. ROYAL DUTCH SHELL PLC <data.frame [4 x 3]>
6 2016. BP PLC <data.frame [1 x 3]>
или если вы просто хотите получить длинный фрейм данных, пропустите строку nest
.
Примечание
Мы предполагаем, что ввод:
advisors2015 <-
structure(list(Mark = c(1L, NA, NA, 2L, NA, NA, NA, 3L),
Company.name = structure(c(3L,
3L, 3L, 2L, 2L, 2L, 2L, 1L), .Label = c("BP PLC", "ROYAL DUTCH SHELL PLC",
"VOLKSWAGEN AG"), class = "factor"), Company.ID = structure(c(1L,
1L, 1L, 3L, 3L, 3L, 3L, 2L), .Label = c("DE2070000543", "GB00102498",
"GB04366849"), class = "factor"), Advisor.Name = structure(c(6L,
8L, 1L, 5L, 7L, 4L, 3L, 2L), .Label = c("C&L TREUARBEIT REVISION",
"CAPITA ASSET SERVICES", "ERNST & YOUNG", "KPMG ACCOUNTANTS NV",
"LLOYDS TSB REGISTRARS", "PRICEWATERHOUSECOOPERS", "PRICEWATERHOUSECOOPERS LLP",
"PWC DEUTSCHE REVISION"), class = "factor")),
class = "data.frame", row.names = c(NA, -8L))
advisors2015 <- advisors2016 <- as.table(as.matrix(advisors2015))