separate() und unite() für String-Spalten
Teilen und verbinden Sie Spaltenwerte, die mehrere Informationsbestandteile enthalten.
separate() und unite() für String-Spalten ist eine kostenlose R Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des R Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der R Academy-Kurs umfasst insgesamt 4 Lektionen.
Zeichenkettenspalten aufteilen und zusammenführen
Rohdaten enthalten häufig mehrere Informationen zusammengefasst in einer einzigen Spalte, beispielsweise enthält '2024-03-15' Jahr, Monat und Tag. Die Funktionen separate() und unite() von tidyr teilen eine Spalte in mehrere auf oder führen mehrere zu einer zusammen.
library(tidyr)
# Date stored as a single string column
df <- data.frame(
id = 1:4,
date = c('2024-01-15','2024-03-22','2023-11-08','2024-06-30'),
value = c(100, 200, 150, 175)
)
print(df)separate() — Eine Spalte in mehrere aufteilen
separate(df, col, into, sep) teilt eine Zeichenkettenspalte mithilfe eines Trennzeichens in mehrere neue Spalten auf. Das Argument into benennt die neuen Spalten; sep ist das Trennzeichen (Standard: jedes Zeichen, das nicht alphanumerisch ist).
library(tidyr)
df <- data.frame(
id = 1:4,
date = c('2024-01-15','2024-03-22','2023-11-08','2024-06-30')
)
# Split 'date' into year, month, day
separate(
df,
col = date,
into = c('year','month','day'),
sep = '-'
)separate() mit dem Argument convert
Standardmäßig erstellt separate() Zeichenkettenspalten. Setzen Sie convert = TRUE, um die neuen Spalten automatisch in den am besten geeigneten Typ umzuwandeln (integer, numeric, logical). Das ist besonders für Jahr- und Monatsspalten nützlich.
library(tidyr)
df <- data.frame(
event = c('2024-1','2024-2','2023-12'),
score = c(85, 90, 78)
)
result <- separate(
df,
col = event,
into = c('year','month'),
sep = '-',
convert = TRUE
)
print(result)
cat('year type:', class(result$year), '\n')
cat('month type:', class(result$month))separate() mit remove = FALSE
Standardmäßig entfernt separate() die ursprüngliche Spalte. Setzen Sie remove = FALSE, um sie neben den neuen aufgeteilten Spalten beizubehalten. Das ist nützlich, wenn Sie die Aufteilung überprüfen oder das Original als Referenz behalten möchten.
library(tidyr)
df <- data.frame(
full_code = c('US-CA-001','US-TX-002','UK-LDN-003')
)
separate(
df,
col = full_code,
into = c('country','state','code'),
sep = '-',
remove = FALSE # Keep original column
)separate() an festen Positionen
Statt eines Trennzeichens können Sie die Aufteilung an festen Zeichenpositionen vornehmen, indem Sie einen Integer-Vektor an sep übergeben. Positive Ganzzahlen zählen von links, negative von rechts.
library(tidyr)
# Product code: first 3 chars = category, next 4 = id
df <- data.frame(
code = c('ABC1234','XYZ5678','DEF9012'),
qty = c(10, 20, 15)
)
separate(
df,
col = code,
into = c('category','product_id'),
sep = 3 # Split after position 3
)unite() — Spalten zu einer zusammenführen
unite(df, col, ..., sep) führt mehrere Spalten zu einer einzigen Zeichenkettenspalte zusammen. Das erste Argument nach df ist der Name der neuen Spalte, gefolgt von den zusammenzuführenden Spalten und anschließend der Trennzeichen-Zeichenkette.
library(tidyr)
df <- data.frame(
first = c('Alice','Bob','Carol'),
last = c('Smith','Jones','White'),
score = c(85, 90, 78)
)
unite(
df,
col = 'full_name',
first, last,
sep = ' '
)unite() mit remove = FALSE
Wie separate() entfernt auch unite() standardmäßig die Quellspalten. Setzen Sie remove = FALSE, um die ursprünglichen Spalten neben der neuen zusammengeführten Spalte beizubehalten. Das ist nützlich, wenn Sie beide Formen benötigen.
library(tidyr)
df <- data.frame(
year = c(2024, 2024, 2023),
month = c(1, 3, 12),
day = c(15, 22, 8)
)
unite(
df,
col = 'date_str',
year, month, day,
sep = '-',
remove = FALSE
)Mit unite() Schlüssel erstellen
Eine häufige Verwendung von unite() ist das Erstellen zusammengesetzter Schlüssel durch Zusammenführen mehrerer Identifikatorspalten. Das ist nützlich, bevor Sie Tabellen verbinden, die einen gemeinsamen Schlüssel aus mehreren Feldern benötigen.
library(tidyr)
library(dplyr)
orders <- data.frame(
year = c(2024, 2024, 2023),
region = c('East','West','East'),
seq_num = c(1, 1, 2)
)
orders_keyed <- orders %>%
unite(col = 'order_key', year, region, seq_num, sep = '_')
print(orders_keyed)separate_rows() — In mehrere Zeilen aufteilen
separate_rows(df, col, sep) teilt eine Zelle mit mehreren Werten in separate Zeilen auf. Das unterscheidet sich von separate(), das in Spalten aufteilt. Diese Funktion ist nützlich, wenn eine Zelle eine durch Kommas getrennte Liste von Elementen enthält.
library(tidyr)
# Tags stored as comma-separated values in one cell
df <- data.frame(
id = 1:3,
title = c('Intro to R','Data Viz','ML Basics'),
tags = c('r,beginner','r,ggplot,visualization','r,ml,modeling')
)
separate_rows(df, tags, sep = ',')separate() und unite() verketten
Sie können separate() und unite() in einer Pipeline verketten, um Datumszeichenketten neu zu formatieren, uneinheitliche Formate zu korrigieren oder neue zusammengesetzte Identifikatoren aus vorhandenen Spalten zu erstellen.
library(tidyr)
library(dplyr)
# Reformat date from YYYY-MM-DD to DD/MM/YYYY
df <- data.frame(
id = 1:3,
date = c('2024-01-15','2024-03-22','2023-11-08')
)
df %>%
separate(date, into=c('year','month','day'), sep='-') %>%
unite(col='date_eu', day, month, year, sep='/')Zusätzliche oder fehlende Bestandteile behandeln
separate() verfügt über ein extra-Argument für den Fall, dass mehr Bestandteile als into-Spalten vorhanden sind: 'warn' (Standard), 'drop' (zusätzliche Bestandteile verwerfen) oder 'merge' (den letzten Bestandteil ungeteilt beibehalten). Ebenso behandelt fill fehlende Bestandteile: 'warn', 'right' oder 'left'.
library(tidyr)
# Inconsistent data: some rows have 2 parts, some have 3
df <- data.frame(
code = c('A-1','B-2-extra','C-3'),
value = c(10, 20, 30)
)
# 'merge' keeps the last piece unsplit
separate(df, code, into=c('prefix','suffix'), sep='-',
extra='merge')Schnelltest
Welche Funktion würden Sie verwenden, um Zeilen aufzuteilen, wenn eine Spalte durch Kommas getrennte Werte wie 'tag1,tag2,tag3' enthält, sodass für jedes Tag eine eigene Zeile entsteht?
Zusammenfassung: separate() und unite()
Wichtige Punkte zu separate() und unite():
separate(col, into, sep)— eine Spalte anhand eines Trennzeichens oder einer Position in mehrere Spalten aufteilenconvert = TRUE— die Ergebnisse der Aufteilung automatisch in passende Datentypen umwandelnremove = FALSE— in beiden Funktionen die ursprüngliche Spalte beibehaltenunite(col, ..., sep)— mehrere Spalten zu einer Zeichenkettenspalte zusammenführenseparate_rows(col, sep)— durch Trennzeichen getrennte Werte in mehrere Zeilen statt Spalten aufteilen- Die Argumente
extraundfillbehandeln uneinheitliche Ergebnisse der Aufteilung
library(tidyr)
library(dplyr)
df <- data.frame(
id = 1:3,
datetime = c('2024-01-15 09:30','2024-03-22 14:15','2023-11-08 11:45')
)
df %>%
separate(datetime, into=c('date','time'), sep=' ') %>%
separate(date, into=c('year','month','day'), sep='-', convert=TRUE) %>%
separate(time, into=c('hour','minute'), sep=':', convert=TRUE)Häufig gestellte Fragen
Ist die Lektion „separate() und unite() für String-Spalten“ kostenlos?
Ja — der vollständige Text von „separate() und unite() für String-Spalten“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des R Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der R Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „separate() und unite() für String-Spalten“?
Teilen und verbinden Sie Spaltenwerte, die mehrere Informationsbestandteile enthalten. Du übst R Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um R Academy zu starten?
Keine Vorkenntnisse erforderlich. R Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.
Wie lange dauert die Lektion „separate() und unite() für String-Spalten“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser R Academy-Lektion Code schreiben und ausführen?
Ja. Jede R Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Von Wide zu Long mit pivot_longer()
- Von Long zu Wide mit pivot_wider()
- separate() und unite() für String-Spalten
- Data Frames verschachteln und entpacken