일부 열에 중첩 된 목록이 두 개 이상있는 데이터 프레임의 열 중첩 해제

사용자 8959427

내 데이터의 중첩을 해제하고 "일반적인"data.frame으로 축소하려고합니다. 현재 데이터는 다음과 같습니다.

              Nombre                             MetaData   Data
1 Total, Ambos sexos titulación, titulacion, Total, total 197535
2 Total, Ambos sexos  sexo, sexo, Ambos sexos, ambossexos 197535
3     Total, Hombres titulación, titulacion, Total, total  78636
4     Total, Hombres         sexo, sexo, Hombres, hombres  78636
5     Total, Mujeres titulación, titulacion, Total, total 118899
6     Total, Mujeres         sexo, sexo, Mujeres, mujeres 118899

쉼표는 목록입니다. 목록을 매핑하고 데이터 프레임으로 중첩을 해제하고 싶습니다. 다음을 사용하여 일부 열의 중첩을 해제 할 수 있습니다.

y <- map(d, ~unlist(.x$MetaData))
yy <- data.frame(y[[1]])
yy

그러나 좋은 data.frame에 넣을 수 없습니다.

데이터:

Data <- list(Abs_1.1.1 = structure(list(Nombre = c("Total, Ambos sexos", 
"Total, Ambos sexos", "Total, Hombres", "Total, Hombres", "Total, Mujeres", 
"Total, Mujeres"), MetaData = list(list(Variable = list(Nombre = "titulación", 
    Codigo = "titulacion"), Nombre = "Total", Codigo = "total"), 
    list(Variable = list(Nombre = "sexo", Codigo = "sexo"), Nombre = "Ambos sexos", 
        Codigo = "ambossexos"), list(Variable = list(Nombre = "titulación", 
        Codigo = "titulacion"), Nombre = "Total", Codigo = "total"), 
    list(Variable = list(Nombre = "sexo", Codigo = "sexo"), Nombre = "Hombres", 
        Codigo = "hombres"), list(Variable = list(Nombre = "titulación", 
        Codigo = "titulacion"), Nombre = "Total", Codigo = "total"), 
    list(Variable = list(Nombre = "sexo", Codigo = "sexo"), Nombre = "Mujeres", 
        Codigo = "mujeres")), Data = list(list(Valor = 197535), 
    list(Valor = 197535), list(Valor = 78636), list(Valor = 78636), 
    list(Valor = 118899), list(Valor = 118899))), row.names = c(NA, 
6L), class = "data.frame"), Abs_1.1.2 = structure(list(Nombre = c("Total, Total, Ambos sexos", 
"Total, Total, Ambos sexos", "Total, Total, Ambos sexos", "Total, Total, Hombres", 
"Total, Total, Hombres", "Total, Total, Hombres"), MetaData = list(
    list(Variable = list(Nombre = "universidad", Codigo = "universidad"), 
        Nombre = "Total", Codigo = "total"), list(Variable = list(
        Nombre = "rama de conocimiento", Codigo = "ramadeconocimiento"), 
        Nombre = "Total", Codigo = "total"), list(Variable = list(
        Nombre = "sexo", Codigo = "sexo"), Nombre = "Ambos sexos", 
        Codigo = "ambossexos"), list(Variable = list(Nombre = "universidad", 
        Codigo = "universidad"), Nombre = "Total", Codigo = "total"), 
    list(Variable = list(Nombre = "rama de conocimiento", Codigo = "ramadeconocimiento"), 
        Nombre = "Total", Codigo = "total"), list(Variable = list(
        Nombre = "sexo", Codigo = "sexo"), Nombre = "Hombres", 
        Codigo = "hombres")), Data = list(list(Valor = 197535), 
    list(Valor = 197535), list(Valor = 197535), list(Valor = 78636), 
    list(Valor = 78636), list(Valor = 78636))), row.names = c(NA, 
6L), class = "data.frame"), Abs_1.1.3 = structure(list(Nombre = c("Total nacional, Total, Ambos sexos", 
"Total nacional, Total, Ambos sexos", "Total nacional, Total, Ambos sexos", 
"Total nacional, Total, Hombres", "Total nacional, Total, Hombres", 
"Total nacional, Total, Hombres"), MetaData = list(list(Variable = list(
    Nombre = "CCAA de su universidad", Codigo = "ccaadesuuniversidad"), 
    Nombre = "Total nacional", Codigo = "totalnacional"), list(
    Variable = list(Nombre = "ámbito de estudio", Codigo = "ambitodeestudio"), 
    Nombre = "Total", Codigo = "total"), list(Variable = list(
    Nombre = "sexo", Codigo = "sexo"), Nombre = "Ambos sexos", 
    Codigo = "ambossexos"), list(Variable = list(Nombre = "CCAA de su universidad", 
    Codigo = "ccaadesuuniversidad"), Nombre = "Total nacional", 
    Codigo = "totalnacional"), list(Variable = list(Nombre = "ámbito de estudio", 
    Codigo = "ambitodeestudio"), Nombre = "Total", Codigo = "total"), 
    list(Variable = list(Nombre = "sexo", Codigo = "sexo"), Nombre = "Hombres", 
        Codigo = "hombres")), Data = list(list(Valor = 197535), 
    list(Valor = 197535), list(Valor = 197535), list(Valor = 78636), 
    list(Valor = 78636), list(Valor = 78636))), row.names = c(NA, 
6L), class = "data.frame"), Abs_1.1.4 = structure(list(Nombre = c("Ambos sexos, Total, Total", 
"Ambos sexos, Total, Total", "Ambos sexos, Total, Total", "Ambos sexos, Total, Personas sin discapacidad", 
"Ambos sexos, Total, Personas sin discapacidad", "Ambos sexos, Total, Personas sin discapacidad"
), MetaData = list(list(Variable = list(Nombre = "sexo", Codigo = "sexo"), 
    Nombre = "Ambos sexos", Codigo = "ambossexos"), list(Variable = list(
    Nombre = "titulación", Codigo = "titulacion"), Nombre = "Total", 
    Codigo = "total"), list(Variable = list(Nombre = "discapacidad", 
    Codigo = "discapacidad"), Nombre = "Total", Codigo = "total"), 
    list(Variable = list(Nombre = "sexo", Codigo = "sexo"), Nombre = "Ambos sexos", 
        Codigo = "ambossexos"), list(Variable = list(Nombre = "titulación", 
        Codigo = "titulacion"), Nombre = "Total", Codigo = "total"), 
    list(Variable = list(Nombre = "discapacidad", Codigo = "discapacidad"), 
        Nombre = "Personas sin discapacidad", Codigo = "personassindiscapacidad")), 
    Data = list(list(Valor = 197535), list(Valor = 197535), list(
        Valor = 197535), list(Valor = 195769), list(Valor = 195769), 
        list(Valor = 195769))), row.names = c(NA, 6L), class = "data.frame"), 
    Abs_1.1.5 = structure(list(Nombre = c("Ambos sexos, Total, Total", 
    "Ambos sexos, Total, Total", "Ambos sexos, Total, Total", 
    "Ambos sexos, Total, Personas sin discapacidad", "Ambos sexos, Total, Personas sin discapacidad", 
    "Ambos sexos, Total, Personas sin discapacidad"), MetaData = list(
        list(Variable = list(Nombre = "sexo", Codigo = "sexo"), 
            Nombre = "Ambos sexos", Codigo = "ambossexos"), list(
            Variable = list(Nombre = "universidad", Codigo = "universidad"), 
            Nombre = "Total", Codigo = "total"), list(Variable = list(
            Nombre = "discapacidad", Codigo = "discapacidad"), 
            Nombre = "Total", Codigo = "total"), list(Variable = list(
            Nombre = "sexo", Codigo = "sexo"), Nombre = "Ambos sexos", 
            Codigo = "ambossexos"), list(Variable = list(Nombre = "universidad", 
            Codigo = "universidad"), Nombre = "Total", Codigo = "total"), 
        list(Variable = list(Nombre = "discapacidad", Codigo = "discapacidad"), 
            Nombre = "Personas sin discapacidad", Codigo = "personassindiscapacidad")), 
        Data = list(list(Valor = 197535), list(Valor = 197535), 
            list(Valor = 197535), list(Valor = 195769), list(
                Valor = 195769), list(Valor = 195769))), row.names = c(NA, 
    6L), class = "data.frame"), Abs_1.1.6 = structure(list(Nombre = c("Ambos sexos, Total, Total", 
    "Ambos sexos, Total, Total", "Ambos sexos, Total, Total", 
    "Ambos sexos, Total, Personas sin discapacidad", "Ambos sexos, Total, Personas sin discapacidad", 
    "Ambos sexos, Total, Personas sin discapacidad"), MetaData = list(
        list(Variable = list(Nombre = "sexo", Codigo = "sexo"), 
            Nombre = "Ambos sexos", Codigo = "ambossexos"), list(
            Variable = list(Nombre = "rama de conocimiento", 
                Codigo = "ramadeconocimiento"), Nombre = "Total", 
            Codigo = "total"), list(Variable = list(Nombre = "discapacidad", 
            Codigo = "discapacidad"), Nombre = "Total", Codigo = "total"), 
        list(Variable = list(Nombre = "sexo", Codigo = "sexo"), 
            Nombre = "Ambos sexos", Codigo = "ambossexos"), list(
            Variable = list(Nombre = "rama de conocimiento", 
                Codigo = "ramadeconocimiento"), Nombre = "Total", 
            Codigo = "total"), list(Variable = list(Nombre = "discapacidad", 
            Codigo = "discapacidad"), Nombre = "Personas sin discapacidad", 
            Codigo = "personassindiscapacidad")), Data = list(
        list(Valor = 197535), list(Valor = 197535), list(Valor = 197535), 
        list(Valor = 195769), list(Valor = 195769), list(Valor = 195769))), row.names = c(NA, 
    6L), class = "data.frame"))
Akrun

우리는 할 수 있습니다

library(dplyr)
library(purrr)
map_dfr(Data, ~ 
              .x %>%
                 mutate(MetaData = list( tibble(col1 = MetaData) %>%
                               unnest_wider(c(col1)) %>% 
                               unnest_longer(c(Variable)))) %>% 
                               unnest) %>%
  unnest(c(Data))
# A tibble: 432 x 6
#   Nombre             Variable   Variable_id Nombre1     Codigo       Data
#   <chr>              <chr>      <chr>       <chr>       <chr>       <dbl>
# 1 Total, Ambos sexos titulación Nombre      Total       total      197535
# 2 Total, Ambos sexos titulacion Codigo      Total       total      197535
# 3 Total, Ambos sexos sexo       Nombre      Ambos sexos ambossexos 197535
# 4 Total, Ambos sexos sexo       Codigo      Ambos sexos ambossexos 197535
# 5 Total, Ambos sexos titulación Nombre      Total       total      197535
# 6 Total, Ambos sexos titulacion Codigo      Total       total      197535
# 7 Total, Ambos sexos sexo       Nombre      Hombres     hombres    197535
# 8 Total, Ambos sexos sexo       Codigo      Hombres     hombres    197535
# 9 Total, Ambos sexos titulación Nombre      Total       total      197535
#10 Total, Ambos sexos titulacion Codigo      Total       total      197535
# … with 422 more rows

또한

map_dfr(Data, ~ 
          .x %>%
            unnest_longer(c(Data)) %>%
            group_by(Nombre, Data, Data_id) %>%
            nest %>% 
            mutate(data = map(data, ~  
                     .x %>% 
                      unnest_wider(c(MetaData)) %>% 
                      unnest_longer(c(Variable))) ) %>%
            rename(Nombre1 = Nombre) %>%
            unnest(c(data)) ) %>%
            ungroup
# A tibble: 72 x 7
#   Nombre1              Data Data_id Variable   Variable_id Nombre      Codigo    
#   <chr>               <dbl> <chr>   <chr>      <chr>       <chr>       <chr>     
# 1 Total, Ambos sexos 197535 Valor   titulación Nombre      Total       total     
# 2 Total, Ambos sexos 197535 Valor   titulacion Codigo      Total       total     
# 3 Total, Ambos sexos 197535 Valor   sexo       Nombre      Ambos sexos ambossexos
# 4 Total, Ambos sexos 197535 Valor   sexo       Codigo      Ambos sexos ambossexos
# 5 Total, Hombres      78636 Valor   titulación Nombre      Total       total     
# 6 Total, Hombres      78636 Valor   titulacion Codigo      Total       total     
# 7 Total, Hombres      78636 Valor   sexo       Nombre      Hombres     hombres   
# 8 Total, Hombres      78636 Valor   sexo       Codigo      Hombres     hombres   
# 9 Total, Mujeres     118899 Valor   titulación Nombre      Total       total     
#10 Total, Mujeres     118899 Valor   titulacion Codigo      Total       total     
# … with 62 more rows

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

중첩 된 목록에 포함 된 데이터 프레임에서 두 개의 열 추출

분류에서Dev

R : 중첩 된 데이터 문제 : 목록 열 문제가있는 데이터 프레임

분류에서Dev

Pandas 데이터 프레임 열 내부의 목록 내부에서 중첩 된 목록을 분해 / 분할하는 방법은 무엇입니까?

분류에서Dev

깔끔한 중첩 해제, 중첩 해제 중에 중첩 된 이름으로 열 이름 접두사

분류에서Dev

중첩 된 목록에서 빈 데이터 프레임 제거

분류에서Dev

2 개의 이진 R 데이터 프레임에서 열 중첩 및 각 열에 대해 중첩 / 비 중첩 계산

분류에서Dev

R의 데이터 프레임 열에서 문자열로 표현되는 중첩 해제 목록

분류에서Dev

중첩 된 사전 목록에서 중첩 된 열로 팬더 데이터 프레임을 만드는 방법

분류에서Dev

두 개의 튜플을 중첩 된 목록 이해와 결합

분류에서Dev

Python의 데이터 프레임에 중첩 된 목록 요소

분류에서Dev

R의 중첩 데이터 프레임에 일부 그룹화 열 추가

분류에서Dev

파이썬에서 두 개의 중첩 된 목록의 교차

분류에서Dev

중첩 된 JSON에 대한 데이터 프레임 그룹 열

분류에서Dev

중첩 된 for 루프없이 Python에서 두 개의 문자열 요소 목록 연결

분류에서Dev

파이썬에서 두 개의 중첩 된 문자열 목록 사이에서 빼기

분류에서Dev

부트 스트랩 3 개의 중첩 열, 중첩 된 행 높이

분류에서Dev

두 개의 데이터 프레임을 중첩 된 사전과 병합

분류에서Dev

두 개 이상의 데이터 프레임에서 동일한 변수에 대한 중첩 목록 내에서 반복 상관 관계 테스트

분류에서Dev

3 개 이상의 데이터 프레임에 대한 접미사가있는 중첩 된 full_join

분류에서Dev

Scala 데이터 프레임 열을 중첩 된 JSON으로 Spark

분류에서Dev

중첩 된 목록에 모든 NA의 벡터가 포함 된 경우 중첩 된 목록을 두 개 이상의 목록으로 분리합니다.

분류에서Dev

데이터 프레임에 중첩 된 목록

분류에서Dev

두 개의 중첩 목록을 파이썬의 단일 중첩 목록에 어떻게 추가합니까?

분류에서Dev

Pandas 데이터 프레임 열 내 중첩 된 목록의 요소 변환 및 합계

분류에서Dev

함수가있는 pandas df 열 내의 하위 목록에 중첩 된 for 루프를 사용한 목록 이해

분류에서Dev

R에 중첩 된 데이터 프레임이있는 unest 목록

분류에서Dev

중첩 된 데이터 프레임 목록에서 열 이름을 추출합니다.

분류에서Dev

3 개의 다른 배열에서 중첩 된 데이터로 배열 객체를 형성해야합니다.

분류에서Dev

3 개의 다른 배열에서 중첩 된 데이터로 배열 객체를 형성해야합니다.

Related 관련 기사

  1. 1

    중첩 된 목록에 포함 된 데이터 프레임에서 두 개의 열 추출

  2. 2

    R : 중첩 된 데이터 문제 : 목록 열 문제가있는 데이터 프레임

  3. 3

    Pandas 데이터 프레임 열 내부의 목록 내부에서 중첩 된 목록을 분해 / 분할하는 방법은 무엇입니까?

  4. 4

    깔끔한 중첩 해제, 중첩 해제 중에 중첩 된 이름으로 열 이름 접두사

  5. 5

    중첩 된 목록에서 빈 데이터 프레임 제거

  6. 6

    2 개의 이진 R 데이터 프레임에서 열 중첩 및 각 열에 대해 중첩 / 비 중첩 계산

  7. 7

    R의 데이터 프레임 열에서 문자열로 표현되는 중첩 해제 목록

  8. 8

    중첩 된 사전 목록에서 중첩 된 열로 팬더 데이터 프레임을 만드는 방법

  9. 9

    두 개의 튜플을 중첩 된 목록 이해와 결합

  10. 10

    Python의 데이터 프레임에 중첩 된 목록 요소

  11. 11

    R의 중첩 데이터 프레임에 일부 그룹화 열 추가

  12. 12

    파이썬에서 두 개의 중첩 된 목록의 교차

  13. 13

    중첩 된 JSON에 대한 데이터 프레임 그룹 열

  14. 14

    중첩 된 for 루프없이 Python에서 두 개의 문자열 요소 목록 연결

  15. 15

    파이썬에서 두 개의 중첩 된 문자열 목록 사이에서 빼기

  16. 16

    부트 스트랩 3 개의 중첩 열, 중첩 된 행 높이

  17. 17

    두 개의 데이터 프레임을 중첩 된 사전과 병합

  18. 18

    두 개 이상의 데이터 프레임에서 동일한 변수에 대한 중첩 목록 내에서 반복 상관 관계 테스트

  19. 19

    3 개 이상의 데이터 프레임에 대한 접미사가있는 중첩 된 full_join

  20. 20

    Scala 데이터 프레임 열을 중첩 된 JSON으로 Spark

  21. 21

    중첩 된 목록에 모든 NA의 벡터가 포함 된 경우 중첩 된 목록을 두 개 이상의 목록으로 분리합니다.

  22. 22

    데이터 프레임에 중첩 된 목록

  23. 23

    두 개의 중첩 목록을 파이썬의 단일 중첩 목록에 어떻게 추가합니까?

  24. 24

    Pandas 데이터 프레임 열 내 중첩 된 목록의 요소 변환 및 합계

  25. 25

    함수가있는 pandas df 열 내의 하위 목록에 중첩 된 for 루프를 사용한 목록 이해

  26. 26

    R에 중첩 된 데이터 프레임이있는 unest 목록

  27. 27

    중첩 된 데이터 프레임 목록에서 열 이름을 추출합니다.

  28. 28

    3 개의 다른 배열에서 중첩 된 데이터로 배열 객체를 형성해야합니다.

  29. 29

    3 개의 다른 배열에서 중첩 된 데이터로 배열 객체를 형성해야합니다.

뜨겁다태그

보관