GOOGLE ADS

Freitag, 15. April 2022

Extrahieren Sie den Unterschied zwischen zwei Zeichenfolgen aus einer Tabelle und schreiben Sie ihn in eine neue Spalte in R

Ich bin neu in der Codierung und versuche, dieses Problem in R zu lösen:

Ich habe zwei Spalten einer Tabelle, die mit Zeichenfolgenketten mit ungleicher Länge gefüllt sind. Die Elemente der Kette sind durch ein Symbol getrennt. Jetzt möchte ich die Differenz der beiden Zeichenfolgenketten für jede Zeile extrahieren und in eine neue Spalte schreiben.


























Schnurkette 1Schnurkette 2Ergebnis
A00;B01;C02;D03A00;B01;C02;D03;E04E04
E04;F05;G06;H07F05;G06;H07;I08E04;I08
............

Lösung des Problems

Hier ist etwas Ähnliches wie bei Ihrem Ansatz mit dem Tidyverse. Ich habe zwei Dummy-Spalten erstellt vec_1und vec_2die Zeichenfolgen in Listenspalten von Vektoren konvertiert. Der Trick besteht darin, die Karte (oder Lapply from Base) zu verwenden, um jede Reihe zu bearbeiten.

library(dplyr)
library(tokenizers)
library(purrr)
df %>%
mutate(vec_1 = map(Stringchain_1, tokenize_regex, pattern = ";", simplify = TRUE),
vec_2 = map(Stringchain_2, tokenize_regex, pattern = ";", simplify = TRUE),
Result = map2_chr(vec_1, vec_2,
~ paste(c(setdiff(.x,.y), setdiff(.y,.x)),
collapse = ";")))

Dadurch erhalten Sie das Ergebnis. Sie können jetzt alle nicht benötigten Spalten löschen.

# A tibble: 2 x 5
Stringchain_1 Stringchain_2 vec_1 vec_2 Result
<chr> <chr> <list> <list> <chr>
1 A00;B01;C02;D03 A00;B01;C02;D03;E04 <chr [4]> <chr [5]> E04
2 E04;F05;G06;H07 F05;G06;H07;I08 <chr [4]> <chr [4]> E04;I08

Keine Kommentare:

Kommentar veröffentlichen

Warum werden SCHED_FIFO-Threads derselben physischen CPU zugewiesen, obwohl CPUs im Leerlauf verfügbar sind?

Lösung des Problems Wenn ich das richtig verstehe, versuchen Sie, SCHED_FIFO mit aktiviertem Hyperthreading ("HT") zu verwenden, ...