取消嵌套列并填充数据 - 找不到未嵌套的列

unnesting columns and filling the data - cannot find unnested columns

我有一些要扩展的嵌套数据,我想扩展 MetaData 列。但是,使用以下内容:

x <- data %>% 
  unnest(MetaData, names_sep = "_") #names_repair = "unique")

扩展了数据,但是当我 运行 colnames(x) 时,我没有看到扩展的列名,我无法对数据进行任何进一步的修改。我的下一步是 fill() MetaData_Variable.Codigo 列,但我无法“访问”它。

数据:

data <- structure(list(COD = c("ADRH144436", "ADRH9438995", "ADRH111995", 
"ADRH160878", "ADRH161615", "ADRH115768", "ADRH159895", "ADRH281307", 
"ADRH130524", "ADRH309865"), Nombre = c("Malgrat de Mar sección 02001. Dato base. Fuente de ingreso: pensiones. ", 
"Barcelona sección 04053. Dato base. Renta bruta media por persona. ", 
"Barcelona sección 07032. Dato base. Fuente de ingreso: prestaciones por desempleo. ", 
"Granollers sección 03002. Dato base. Fuente de ingreso: otros ingresos. ", 
"Cornellà de Llobregat sección 06002. Dato base. Fuente de ingreso: prestaciones por desempleo. ", 
"Sabadell sección 03023. Dato base. Fuente de ingreso: otros ingresos. ", 
"Santa Coloma de Gramenet sección 06010. Dato base. Fuente de ingreso: prestaciones por desempleo. ", 
"Cercs distrito 01. Dato base. Fuente de ingreso: salario. ", 
"Barcelona sección 02018. Dato base. Fuente de ingreso: otras prestaciones. ", 
"Masnou, El distrito 02. Dato base. Fuente de ingreso: prestaciones por desempleo. "
), T3_Unidad = c("Euros", "Euros", "Euros", "Euros", "Euros", 
"Euros", "Euros", "Euros", "Euros", "Euros"), T3_Escala = c(" ", 
" ", " ", " ", " ", " ", " ", " ", " ", " "), MetaData = list(
    structure(list(Id = c(72L, 329776L, 322963L), Variable = structure(list(
        Id = c(3L, 847L, 849L), Nombre = c("Tipo de dato", "Secciones", 
        "Distribución de la fuente de ingresos"), Codigo = c("", 
        "SECC", "")), class = "data.frame", row.names = c(NA, 
    3L)), Nombre = c("Dato base", "Malgrat de Mar sección 02001", 
    "Fuente de ingreso: pensiones"), Codigo = c("", "0811002001", 
    "")), class = "data.frame", row.names = c(NA, 3L)), structure(list(
        Id = c(72L, 382443L, 328295L), Variable = structure(list(
            Id = c(3L, 482L, 847L), Nombre = c("Tipo de dato", 
            "SALDOS CONTABLES", "Secciones"), Codigo = c("", 
            "", "SECC")), class = "data.frame", row.names = c(NA, 
        3L)), Nombre = c("Dato base", "Renta bruta media por persona", 
        "Barcelona sección 04053"), Codigo = c("", "", "0801904053"
        )), class = "data.frame", row.names = c(NA, 3L)), structure(list(
        Id = c(72L, 328519L, 322964L), Variable = structure(list(
            Id = c(3L, 847L, 849L), Nombre = c("Tipo de dato", 
            "Secciones", "Distribución de la fuente de ingresos"
            ), Codigo = c("", "SECC", "")), class = "data.frame", row.names = c(NA, 
        3L)), Nombre = c("Dato base", "Barcelona sección 07032", 
        "Fuente de ingreso: prestaciones por desempleo"), Codigo = c("", 
        "0801907032", "")), class = "data.frame", row.names = c(NA, 
    3L)), structure(list(Id = c(72L, 329470L, 322966L), Variable = structure(list(
        Id = c(3L, 847L, 849L), Nombre = c("Tipo de dato", "Secciones", 
        "Distribución de la fuente de ingresos"), Codigo = c("", 
        "SECC", "")), class = "data.frame", row.names = c(NA, 
    3L)), Nombre = c("Dato base", "Granollers sección 03002", 
    "Fuente de ingreso: otros ingresos"), Codigo = c("", "0809603002", 
    "")), class = "data.frame", row.names = c(NA, 3L)), structure(list(
        Id = c(72L, 329281L, 322964L), Variable = structure(list(
            Id = c(3L, 847L, 849L), Nombre = c("Tipo de dato", 
            "Secciones", "Distribución de la fuente de ingresos"
            ), Codigo = c("", "SECC", "")), class = "data.frame", row.names = c(NA, 
        3L)), Nombre = c("Dato base", "Cornellà de Llobregat sección 06002", 
        "Fuente de ingreso: prestaciones por desempleo"), Codigo = c("", 
        "0807306002", "")), class = "data.frame", row.names = c(NA, 
    3L)), structure(list(Id = c(72L, 330493L, 322966L), Variable = structure(list(
        Id = c(3L, 847L, 849L), Nombre = c("Tipo de dato", "Secciones", 
        "Distribución de la fuente de ingresos"), Codigo = c("", 
        "SECC", "")), class = "data.frame", row.names = c(NA, 
    3L)), Nombre = c("Dato base", "Sabadell sección 03023", 
    "Fuente de ingreso: otros ingresos"), Codigo = c("", "0818703023", 
    "")), class = "data.frame", row.names = c(NA, 3L)), structure(list(
        Id = c(72L, 331124L, 322964L), Variable = structure(list(
            Id = c(3L, 847L, 849L), Nombre = c("Tipo de dato", 
            "Secciones", "Distribución de la fuente de ingresos"
            ), Codigo = c("", "SECC", "")), class = "data.frame", row.names = c(NA, 
        3L)), Nombre = c("Dato base", "Santa Coloma de Gramenet sección 06010", 
        "Fuente de ingreso: prestaciones por desempleo"), Codigo = c("", 
        "0824506010", "")), class = "data.frame", row.names = c(NA, 
    3L)), structure(list(Id = c(72L, 331290L, 322962L), Variable = structure(list(
        Id = c(3L, 846L, 849L), Nombre = c("Tipo de dato", "Distritos", 
        "Distribución de la fuente de ingresos"), Codigo = c("", 
        "DIST", "")), class = "data.frame", row.names = c(NA, 
    3L)), Nombre = c("Dato base", "Cercs distrito 01", "Fuente de ingreso: salario"
    ), Codigo = c("", "0826801", "")), class = "data.frame", row.names = c(NA, 
    3L)), structure(list(Id = c(72L, 327968L, 322965L), Variable = structure(list(
        Id = c(3L, 847L, 849L), Nombre = c("Tipo de dato", "Secciones", 
        "Distribución de la fuente de ingresos"), Codigo = c("", 
        "SECC", "")), class = "data.frame", row.names = c(NA, 
    3L)), Nombre = c("Dato base", "Barcelona sección 02018", 
    "Fuente de ingreso: otras prestaciones"), Codigo = c("", 
    "0801902018", "")), class = "data.frame", row.names = c(NA, 
    3L)), structure(list(Id = c(72L, 329895L, 322964L), Variable = structure(list(
        Id = c(3L, 846L, 849L), Nombre = c("Tipo de dato", "Distritos", 
        "Distribución de la fuente de ingresos"), Codigo = c("", 
        "DIST", "")), class = "data.frame", row.names = c(NA, 
    3L)), Nombre = c("Dato base", "Masnou, El distrito 02", "Fuente de ingreso: prestaciones por desempleo"
    ), Codigo = c("", "0811802", "")), class = "data.frame", row.names = c(NA, 
    3L))), Data = list(structure(list(Fecha = c("2018-01-01T00:00:00.000+01:00", 
"2017-01-01T00:00:00.000+01:00", "2016-01-01T00:00:00.000+01:00", 
"2015-01-01T00:00:00.000+01:00"), T3_TipoDato = c("Definitivo", 
"Definitivo", "Definitivo", "Definitivo"), T3_Periodo = c("A", 
"A", "A", "A"), Anyo = 2018:2015, Valor = c(2739, 2624, 2573, 
2675)), class = "data.frame", row.names = c(NA, 4L)), structure(list(
    Fecha = c("2018-01-01T00:00:00.000+01:00", "2017-01-01T00:00:00.000+01:00", 
    "2016-01-01T00:00:00.000+01:00", "2015-01-01T00:00:00.000+01:00"
    ), T3_TipoDato = c("Definitivo", "Definitivo", "Definitivo", 
    "Definitivo"), T3_Periodo = c("A", "A", "A", "A"), Anyo = 2018:2015, 
    Valor = c(31554, 30316, 29789, 28079)), class = "data.frame", row.names = c(NA, 
4L)), structure(list(Fecha = c("2018-01-01T00:00:00.000+01:00", 
"2017-01-01T00:00:00.000+01:00", "2016-01-01T00:00:00.000+01:00", 
"2015-01-01T00:00:00.000+01:00"), T3_TipoDato = c("Definitivo", 
"Definitivo", "Definitivo", "Definitivo"), T3_Periodo = c("A", 
"A", "A", "A"), Anyo = 2018:2015, Valor = c(264, 228, 307, 338
)), class = "data.frame", row.names = c(NA, 4L)), structure(list(
    Fecha = c("2018-01-01T00:00:00.000+01:00", "2017-01-01T00:00:00.000+01:00", 
    "2016-01-01T00:00:00.000+01:00", "2015-01-01T00:00:00.000+01:00"
    ), T3_TipoDato = c("Definitivo", "Definitivo", "Definitivo", 
    "Definitivo"), T3_Periodo = c("A", "A", "A", "A"), Anyo = 2018:2015, 
    Valor = c(922, 878, 861, 931)), class = "data.frame", row.names = c(NA, 
4L)), structure(list(Fecha = c("2017-01-01T00:00:00.000+01:00", 
"2016-01-01T00:00:00.000+01:00", "2015-01-01T00:00:00.000+01:00"
), T3_TipoDato = c("Definitivo", "Definitivo", "Definitivo"), 
    T3_Periodo = c("A", "A", "A"), Anyo = 2017:2015, Valor = c(293, 
    288, 355)), class = "data.frame", row.names = c(NA, 3L)), 
    structure(list(Fecha = c("2018-01-01T00:00:00.000+01:00", 
    "2017-01-01T00:00:00.000+01:00", "2016-01-01T00:00:00.000+01:00", 
    "2015-01-01T00:00:00.000+01:00"), T3_TipoDato = c("Definitivo", 
    "Definitivo", "Definitivo", "Definitivo"), T3_Periodo = c("A", 
    "A", "A", "A"), Anyo = 2018:2015, Valor = c(951, 246, 225, 
    287)), class = "data.frame", row.names = c(NA, 4L)), structure(list(
        Fecha = c("2018-01-01T00:00:00.000+01:00", "2017-01-01T00:00:00.000+01:00", 
        "2016-01-01T00:00:00.000+01:00", "2015-01-01T00:00:00.000+01:00"
        ), T3_TipoDato = c("Definitivo", "Definitivo", "Definitivo", 
        "Definitivo"), T3_Periodo = c("A", "A", "A", "A"), Anyo = 2018:2015, 
        Valor = c(280, 303, 366, 399)), class = "data.frame", row.names = c(NA, 
    4L)), structure(list(Fecha = c("2018-01-01T00:00:00.000+01:00", 
    "2017-01-01T00:00:00.000+01:00", "2016-01-01T00:00:00.000+01:00", 
    "2015-01-01T00:00:00.000+01:00"), T3_TipoDato = c("Definitivo", 
    "Definitivo", "Definitivo", "Definitivo"), T3_Periodo = c("A", 
    "A", "A", "A"), Anyo = 2018:2015, Valor = c(7960, 7377, 6874, 
    6685)), class = "data.frame", row.names = c(NA, 4L)), structure(list(
        Fecha = c("2018-01-01T00:00:00.000+01:00", "2017-01-01T00:00:00.000+01:00", 
        "2016-01-01T00:00:00.000+01:00", "2015-01-01T00:00:00.000+01:00"
        ), T3_TipoDato = c("Definitivo", "Definitivo", "Definitivo", 
        "Definitivo"), T3_Periodo = c("A", "A", "A", "A"), Anyo = 2018:2015, 
        Valor = c(700, 586, 579, 563)), class = "data.frame", row.names = c(NA, 
    4L)), structure(list(Fecha = c("2018-01-01T00:00:00.000+01:00", 
    "2017-01-01T00:00:00.000+01:00", "2016-01-01T00:00:00.000+01:00", 
    "2015-01-01T00:00:00.000+01:00"), T3_TipoDato = c("Definitivo", 
    "Definitivo", "Definitivo", "Definitivo"), T3_Periodo = c("A", 
    "A", "A", "A"), Anyo = 2018:2015, Valor = c(234, 232, 276, 
    307)), class = "data.frame", row.names = c(NA, 4L)))), class = "data.frame", row.names = c(NA, 
-10L))

这是否解决了您的问题?

library(tidyr)
library(dplyr)
library(purrr)
y <- map_df(names(data), ~ data %>% 
         select(.x) %>%
         unnest_wider(.x,names_sep="_"))

输出:

colnames(y)
 [1] "COD_1"             "Nombre_1"          "T3_Unidad_1"       "T3_Escala_1"       "MetaData_Id"      
 [6] "MetaData_Variable" "MetaData_Nombre"   "MetaData_Codigo"   "Data_Fecha"        "Data_T3_TipoDato" 
[11] "Data_T3_Periodo"   "Data_Anyo"         "Data_Valor" 

也许你可以用这个?

library(dplyr)
library(tidyr)

x <- data %>% unnest(MetaData, names_sep = "_")
y <- bind_rows(x %>% select(-MetaData_Variable), x$MetaData_Variable)