Wenn Sie zwei data.frame
s zeilenweise kombinieren möchten, die unterschiedliche Mengen an Spalten haben, gibt es mehrere Ansätze. Eine gebräuchliche Methode ist, sicherzustellen, dass beide Datenrahmen dieselben Spalten haben (wobei fehlende Spalten mit NA
s gefüllt werden) und dann rbind()
zu verwenden.
Hier ist ein Beispiel, wie Sie dies tun können:
- Zuerst erstellen wir zwei Beispiel-
data.frame
s:
df1 <- data.frame(
A = 1:3,
B = letters[1:3]
)
df2 <- data.frame(
A = 4:6,
C = letters[4:6]
)
- Nun definieren wir eine Funktion, die die Datenrahmen so anpasst, dass sie dieselben Spalten haben:
bind_dfs <- function(df1, df2) {
common_cols <- intersect(names(df1), names(df2))
only_df1 <- setdiff(names(df1), common_cols)
only_df2 <- setdiff(names(df2), common_cols)
df1[, only_df2] <- NA
df2[, only_df1] <- NA
combined_df <- rbind(df1, df2)
return(combined_df[ , order(names(combined_df))])
}
- Anschließend können Sie die Funktion verwenden, um die beiden
data.frame
s zu kombinieren:
result <- bind_dfs(df1, df2)
print(result)
Das Ergebnis ist ein kombinierter Datenrahmen, der die Zeilen aus df1
und df2
enthält. Spalten, die in einem der ursprünglichen Datenrahmen, aber nicht im anderen vorhanden waren, werden mit NA
s gefüllt.
Wenn Sie das dplyr
-Paket verwenden, gibt es eine Funktion namens bind_rows()
, die dieses Verhalten direkt unterstützt:
library(dplyr)
result_dplyr <- bind_rows(df1, df2)
print(result_dplyr)
bind_rows()
aus dplyr
ist in der Regel einfacher und direkter, aber es ist gut zu wissen, wie man das manuell macht, falls Sie nicht auf externe Pakete angewiesen sein möchten.