Extrahieren bestimmter Zeilen aus einem verschachtelten Datenrahmen mithilfe von map mit einer if else-Bedingung

Benutzer113156

Ich habe einen Datenrahmen mit einigen verschachtelten Daten und möchte die Daten verflachen und bestimmte Zellen aus den verschachtelten Daten extrahieren.

Die verschachtelten Daten befinden sich in der Spalte, MetaDatadie wie folgt aussieht:

[[1]]
      Id Variable.Id        Variable.Nombre Variable.Codigo                     Nombre Codigo
1     72           3           Tipo de dato                                  Dato base       
2   5457          19             Municipios             MUN                     Abrera  08001
3 274520         260 Conceptos Demográficos                 Edad media de la población       

[[2]]
      Id Variable.Id        Variable.Nombre Variable.Codigo                              Nombre  Codigo
1     72           3           Tipo de dato                                           Dato base        
2 366833         260 Conceptos Demográficos                 Porcentaje de hogares unipersonales        
3 327739         846              Distritos            DIST                Badalona distrito 02 0801502

[[3]]
      Id Variable.Id        Variable.Nombre Variable.Codigo                                 Nombre     Codigo
1     72           3           Tipo de dato                                              Dato base           
2 366833         260 Conceptos Demográficos                    Porcentaje de hogares unipersonales           
3 331103         847              Secciones            SECC Santa Coloma de Gramenet sección 05009 0824505009

Ich möchte extrahieren -

  • Von [[1]]den municipios, MUN, Abreraund08001

  • Von [[2]]den Distritos, DIST, Badalona distrito 02und0801502

  • Von [[3]]dem Secciones, SECC, Santa Columa de Gramenet sección 05009und 0824505009.

Die einfache Verwendung des Zellenstandorts funktioniert jedoch nicht, da sich der Standort für die MUNDaten für die DISTund SECC-Daten an einem etwas anderen Standort befindet - dh für MUNunter der Spalte Nombreund Codigoder Zellenstandort in Zeile 2, während der Zellenstandort für die DISTund SECC-Daten ist in Reihe 3.

Ich habe den folgenden Code, der die Daten für das MUNproblemlos extrahieren kann .

data2 <- data %>% 
  mutate(MetaDataWider = map(MetaData, ~ {
    v1 <- .x[cbind(c(2, 3, 2, 2, 3), c(3, 3, 4, 5, 5))]
    names(v1) <- c("type", "contable", "type_code", "region", "variable")
    as_tibble_row(v1)
  })
  )

Ich möchte nun ifelsedem map/ eine Anweisung hinzufügen map_if, um die Daten für die DISTund SECC-Beobachtungen korrekt zu extrahieren .

Alternativ können Sie die ifelseAnweisung erstellen , um die Reihenfolge der Beobachtungen DISTund zu ändern SECC. dh

wenn Variable.Codigoenthält DIST| SECCReihe 3 auf Reihe 2 verschieben, sonst nichts.

Dann kann ich den Code verwenden, den ich bereits habe, um die Daten zu extrahieren.

Daten:

data <- structure(list(COD = c("ADRH7218704", "ADRH7013747", "ADRH6909920"
), Nombre = c("Abrera. Edad media de la población. Dato base. ", 
"Badalona distrito 02. Porcentaje de hogares unipersonales. Dato base. ", 
"Santa Coloma de Gramenet sección 05009. Porcentaje de hogares unipersonales. Dato base. "
), T3_Unidad = c("Años", "Porcentaje", "Porcentaje"), T3_Escala = c(" ", 
" ", " "), MetaData = list(structure(list(Id = c(72L, 5457L, 
274520L), Variable = structure(list(Id = c(3L, 19L, 260L), Nombre = c("Tipo de dato", 
"Municipios", "Conceptos Demográficos"), Codigo = c("", "MUN", 
"")), class = "data.frame", row.names = c(NA, 3L)), Nombre = c("Dato base", 
"Abrera", "Edad media de la población"), Codigo = c("", "08001", 
"")), class = "data.frame", row.names = c(NA, 3L)), structure(list(
    Id = c(72L, 366833L, 327739L), Variable = structure(list(
        Id = c(3L, 260L, 846L), Nombre = c("Tipo de dato", "Conceptos Demográficos", 
        "Distritos"), Codigo = c("", "", "DIST")), class = "data.frame", row.names = c(NA, 
    3L)), Nombre = c("Dato base", "Porcentaje de hogares unipersonales", 
    "Badalona distrito 02"), Codigo = c("", "", "0801502")), class = "data.frame", row.names = c(NA, 
3L)), structure(list(Id = c(72L, 366833L, 331103L), Variable = structure(list(
    Id = c(3L, 260L, 847L), Nombre = c("Tipo de dato", "Conceptos Demográficos", 
    "Secciones"), Codigo = c("", "", "SECC")), class = "data.frame", row.names = c(NA, 
3L)), Nombre = c("Dato base", "Porcentaje de hogares unipersonales", 
"Santa Coloma de Gramenet sección 05009"), Codigo = c("", "", 
"0824505009")), 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(39.7, 39.5, 39.2, 
    38.8)), 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(25.5, 25.7, 25.5, 25.8)), 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(24.1, 23.6, 22.2, 
    20.9)), class = "data.frame", row.names = c(NA, 4L)))), row.names = c(NA, 
-3L), class = "data.frame")
Ronak Shah

Wie wäre es mit purrr::map_df?

purrr::map_df(data$MetaData, ~ {
  .x[.x$Variable$Codigo != '', ]
})

Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

Drucken Sie bestimmte Zeilen aus einem Datenrahmen mithilfe einer Bedingung

Extrahieren Sie Zeilen aus einem Datenrahmen mithilfe einer Liste von n Elementen

Extrahieren von Spaltennamen mit Bedingung aus einem Datenrahmen

Auswählen von Zeilen aus einem Datenrahmen mithilfe einer Werteliste

Extrahieren von Zeilen unter Berücksichtigung einer Bedingung in einem Datenrahmen in R

Auswählen von Zeilen in einem Pandas-Datenrahmen aus einer Spalte mit einem kategorialen Typ mithilfe eines logischen Operators

Wie kann eine festgelegte Anzahl von Zeilen aus einem Datenrahmen mit einer voreingestellten Bedingung zufällig abgetastet werden?

Extrahieren bestimmter Zeilen aus einer Datei, die einer Bedingung aus einer anderen Datei entsprechen

Extrahieren von zwei Spalten aus einem Datenrahmen, der in einer verschachtelten Liste enthalten ist

R: Extrahieren bestimmter Zeilen aus dem Datenrahmen

Ruft Zeilen mit Abständen innerhalb bestimmter Werte aus einem Datenrahmen von Bereichen in R ab

Wählen Sie Zeilen mit einer bestimmten Bedingung aus einem anderen Datenrahmen aus

Extrahieren Sie Zeilen aus einer Liste von Datenrahmen und binden Sie den Dateinamen mit qualifizierenden Zeilen

Pandas: Auswählen von Zeilen aus einem Datenrahmen mithilfe einer Reihe von Zeichenfolgen

Ausschließen einiger Zeilen basierend auf einer Bedingung aus einem Datenrahmen mit R

Entfernen von Zeilen in einer verschachtelten Struktur in einem Spark-Datenrahmen mit PySpark (Details im Text)

Extrahieren bestimmter Spalten aus einem Datenrahmen

Extrahieren von Positionen mit Werten über 10 aus bestimmten Zeilen und Spalten in einem Datenrahmen

Mischen von Zeilen in einem Datenrahmen basierend auf einer Bedingung mit R

Wie verkettet man Kombinationen von Zeilen * mit einer bestimmten Bedingung * aus zwei verschiedenen Datenrahmen?

Entfernen von Spalten aus Pandas-Datenrahmen mithilfe einer Bedingung

Auswählen mehrerer Zeilen aus einem Datenrahmen mithilfe einer Spalte

Erstellen einer Zufallsstichprobe aus einem Datenrahmen mit einer verschachtelten Struktur

Verwenden von purrr zum Extrahieren von Werten aus verschachtelten Datenrahmen basierend auf der Bedingung

Entfernen von Zeilen aus Datenrahmen mit mehreren Bedingungen mithilfe einer Schleife

Entfernen bestimmter Zeilen mit einer Bedingung

Summieren in einem Datenrahmen mit Bedingung aus einer anderen Spalte

Python: In Pandas extrahieren Sie Daten aus mehreren Spalten in einem Datenrahmen basierend auf einer Bedingung und fügen sie zu verschiedenen Datenrahmen hinzu, die mit einer Spalte übereinstimmen

Extrahieren bestimmter Dateien mit Dateierweiterung aus einem .tar.xz-Archiv mithilfe des MacOS-Terminals

TOP Liste

  1. 1

    So legen Sie mit dem Interface Builder unterschiedliche führende Speicherplätze für unterschiedliche Geräte fest

  2. 2

    Wie konvertiere ich einen Vektor von Bytes (u8) in eine Zeichenfolge?

  3. 3

    Wie kann ich in SCSS mehrere Klassen zu einer einzigen kombinieren?

  4. 4

    Eclipse Oxygen - Projekte verschwinden

  5. 5

    Wie konvertiert man einen Datenrahmen im langen Format in eine Liste mit einem geeigneten Format?

  6. 6

    Wie kann ich den Kaskadenmodus global einstellen?

  7. 7

    Wie erstelle ich einen neuen übergeordneten Knoten außerhalb der .ref (/ path) in der Firebase-Echtzeitdatenbank mithilfe von Cloud-Funktionen (Typescript)?

  8. 8

    So erhalten Sie eine gleichmäßige Höhe für alle Eingabefelder

  9. 9

    Python: Spalten mit demselben Namen zusammenführen, wobei der Mindestwert beibehalten wird

  10. 10

    Speichern Sie ein MPAndroidChart-Diagramm in einem Bild, ohne es in einer Aktivität anzuzeigen

  11. 11

    Gruppieren Sie Datenrahmenspalten nach ihrem Datum (die Spaltentitel enthalten) und fassen Sie die Instanzen von Einsen und Nullen in R . zusammen

  12. 12

    ElasticSearch BulkShardRequest ist aufgrund von org.elasticsearch.common.util.concurrent.EsThreadPoolExecutor fehlgeschlagen

  13. 13

    Tic Tac Toe-Spiel im React-Reset-Button funktioniert nicht

  14. 14

    Tomcat - Leiten Sie den alten Kontextstamm zum neuen Kontextstamm um

  15. 15

    Wie wählt man Unterschiede mit drei Tabellen aus?

  16. 16

    Ärgerliches Problem mit yaml, das ich nicht lösen kann

  17. 17

    Wie kann ich meine Tabelle abfragen, um sie in mySQL nach 2 Feldern zu gruppieren?

  18. 18

    So berechnen Sie die Verfügbarkeit von Anwendungen (SLA)

  19. 19

    Fügen Sie eine weitere Schaltfläche zu gwt Suggest Box hinzu

  20. 20

    Modbus Python Schneider PM5300

  21. 21

    Wie kann eine gleichmäßige Lastverteilung in ElasticSearch mit Indizes mit unterschiedlicher Anzahl von Shards erreicht werden?

heißlabel

Archiv