Entfernen Sie doppelte Zeilen nach Spalte in R
-
Verwenden Sie die
distinct
-Funktion desdplyr
-Pakets, um doppelte Zeilen pro Spalte in R . zu entfernen -
Verwenden Sie die Funktionen
group_by
,filter
undduplicated
, um doppelte Zeilen pro Spalte in R . zu entfernen -
Verwenden Sie die Funktionen
group_by
undslice
, um doppelte Zeilen pro Spalte in R . zu entfernen
In diesem Artikel erfahren Sie, wie Sie doppelte Zeilen nach Spalte in R entfernen.
Verwenden Sie die distinct
-Funktion des dplyr
-Pakets, um doppelte Zeilen pro Spalte in R . zu entfernen
Das Paket dplyr
bietet die Funktion distinct
, eine der am häufigsten verwendeten Bibliotheken zur Datenmanipulation in der Sprache R. distinct
wählt eindeutige Zeilen im gegebenen DataFrame aus. Es nimmt den DataFrame als erstes Argument und dann die Variablen, die bei der Auswahl berücksichtigt werden müssen. Es können mehrere Spaltenvariablen zum Filtern der eindeutigen Zeilen bereitgestellt werden, aber im folgenden Codeausschnitt demonstrieren wir die einzelnen Variablenbeispiele. Das dritte Argument ist optional und hat den Standardwert - FALSE
, aber wenn der Benutzer explizit TRUE
übergibt, behält die Funktion nach dem Filtern alle Variablen im DataFrame. Beachten Sie, dass dplyr
eine Operatorfunktion namens Pipes der Form - %>%
verwendet, die so interpretiert wird, dass sie die linke Variable als erstes Argument der rechten Funktion liefert. Die Notation x %?% f(y)
wird nämlich zu f(x, y)
.
library(dplyr)
df1 <- data.frame(id = c(1, 2, 2, 3, 3, 4, 5, 5),
gender = c("F", "F", "M", "F", "B", "B", "F", "M"),
variant = c("a", "b", "c", "d", "e", "f", "g", "h"))
t1 <- df1 %>% distinct(id, .keep_all = TRUE)
t2 <- df1 %>% distinct(gender, .keep_all = TRUE)
t3 <- df1 %>% distinct(variant, .keep_all = TRUE)
df2 <- mtcars
tmp1 <- df2 %>% distinct(cyl, .keep_all = TRUE)
tmp2 <- df2 %>% distinct(mpg, .keep_all = TRUE)
Verwenden Sie die Funktionen group_by
, filter
und duplicated
, um doppelte Zeilen pro Spalte in R . zu entfernen
Eine andere Lösung, um doppelte Zeilen nach Spaltenwerten zu entfernen, besteht darin, den DataFrame mit der Spaltenvariablen zu gruppieren und dann Elemente mit den Funktionen filter
und Dupliziert
zu filtern. Der erste Schritt erfolgt mit der Funktion group_by
, die Teil des Pakets dplyr
ist. Als nächstes wird die Ausgabe der vorherigen Operation an die Funktion filter
umgeleitet, um doppelte Zeilen zu entfernen.
library(dplyr)
df1 <- data.frame(id = c(1, 2, 2, 3, 3, 4, 5, 5),
gender = c("F", "F", "M", "F", "B", "B", "F", "M"),
variant = c("a", "b", "c", "d", "e", "f", "g", "h"))
t1 <- df1 %>% group_by(id) %>% filter (! duplicated(id))
t2 <- df1 %>% group_by(gender) %>% filter (! duplicated(gender))
t3 <- df1 %>% group_by(variant) %>% filter (! duplicated(variant))
df2 <- mtcars
tmp3 <- df2 %>% group_by(cyl) %>% filter (! duplicated(cyl))
tmp4 <- df2 %>% group_by(mpg) %>% filter (! duplicated(mpg))
Verwenden Sie die Funktionen group_by
und slice
, um doppelte Zeilen pro Spalte in R . zu entfernen
Alternativ kann man die Funktion group_by
zusammen mit slice
verwenden, um doppelte Zeilen nach Spaltenwerten zu entfernen. slice
ist ebenfalls Teil des dplyr
-Pakets und wählt Zeilen nach Index aus. Interessanterweise wählt slice
beim Gruppieren des DataFrames die Zeilen auf dem angegebenen Index in jeder Gruppe aus, wie im folgenden Beispielcode gezeigt.
library(dplyr)
df1 <- data.frame(id = c(1, 2, 2, 3, 3, 4, 5, 5),
gender = c("F", "F", "M", "F", "B", "B", "F", "M"),
variant = c("a", "b", "c", "d", "e", "f", "g", "h"))
t1 <- df1 %>% group_by(id) %>% slice(1)
t2 <- df1 %>% group_by(gender) %>% slice(1)
t3 <- df1 %>% group_by(variant) %>% slice(1)
df2 <- mtcars
tmp5 <- df2 %>% group_by(cyl) %>% slice(1)
tmp6 <- df2 %>% group_by(mpg) %>% slice(1)
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook