r - 取消嵌套列并填充数据 - 找不到未嵌套的列
问题描述
我有一些要扩展的嵌套数据,我想扩展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"
推荐阅读
- ansible - 使用带有 stat 模块的循环时如何注册变量?
- ios - 在两个锚点之间居中
- python - 在熊猫中使用字典部分填充列
- excel - Excel 2016,如何提取与用作图表值的单元格相邻的未绘制图表的值?
- python - paho-mqtt 发布-订阅不能从 Python 中的单独文件工作
- sql - 如何在单个 SQL 查询中为每个字段选择第 k 条记录
- javascript - 尝试根据使用 Javascript 的 URL 中的内容重定向页面
- applescript - Applescript 以 Safari 私人模式打开 youtube
- typescript - ionic 4 - 背景地理位置问题
- r - 由于路径中的重音,在 R 中使用 readJPEG 打开 .jpg 时出错