Entfernen Sie doppelte Zeilen nach Spalte in R

Jinku Hu 30 Januar 2023
  1. Verwenden Sie die distinct-Funktion des dplyr-Pakets, um doppelte Zeilen pro Spalte in R . zu entfernen
  2. Verwenden Sie die Funktionen group_by, filter und duplicated, um doppelte Zeilen pro Spalte in R . zu entfernen
  3. Verwenden Sie die Funktionen group_by und slice, um doppelte Zeilen pro Spalte in R . zu entfernen
Entfernen Sie doppelte Zeilen nach Spalte in R

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)
Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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

Verwandter Artikel - R Data Frame