Muszę przeczytać CSV
plik w data.frame R. Niektóre wiersze mają ten sam element w jednej z kolumn. Chciałbym usunąć wiersze, które są duplikatami w tej kolumnie. Na przykład:
platform_external_dbus 202 16 google 1
platform_external_dbus 202 16 space-ghost.verbum 1
platform_external_dbus 202 16 localhost 1
platform_external_dbus 202 16 users.sourceforge 8
platform_external_dbus 202 16 hughsie 1
Chciałbym tylko jeden z tych wierszy, ponieważ pozostałe mają te same dane w pierwszej kolumnie.
r
duplicates
r-faq
user1897691
źródło
źródło
google
czylocalhost
czyhughsie
?Odpowiedzi:
po prostu wyodrębnij ramkę danych do potrzebnych kolumn, a następnie użyj unikalnej funkcji: D
źródło
[,1:3]
częścią tego kodu? Jestem nowy w R, dlatego pytam, co, jak mogę tylko założyć, jest oczywistym pytaniem.Dla osób, które przybyły tutaj, aby poszukać ogólnej odpowiedzi na temat usuwania zduplikowanych wierszy, użyj
!duplicated()
:Odpowiedź od: usuwanie zduplikowanych wierszy z ramki danych R.
źródło
df[!duplicated(df[, 1:2])]
Funkcja
distinct()
wdplyr
pakiecie wykonuje dowolne usuwanie duplikatów, albo z określonych kolumn / zmiennych (jak w tym pytaniu), albo biorąc pod uwagę wszystkie kolumny / zmienne.dplyr
jest częściątidyverse
.Dane i pakiet
Usuń wiersze zduplikowane w określonej kolumnie (np. Kolumnie
a
)Zauważ, że
.keep_all = TRUE
zachowuje wszystkie kolumny, w przeciwnym raziea
zachowana zostanie tylko kolumna .Usuń wiersze, które są kompletnymi duplikatami innych wierszy:
źródło
.keep_all
jest czy zachować wszystkie kolumny, nie należy mieszać zkeep
wpandas
.data.table
Pakiet ma równieżunique
iduplicated
metody jej własnego z dodatkowymi funkcjami.Obie metody
unique.data.table
iduplicated.data.table
metody mają dodatkowyby
argument, który umożliwia przekazanie odpowiednio wektoracharacter
lubinteger
wektora nazw kolumn lub ich lokalizacjiInną ważną cechą tych metod jest ogromny wzrost wydajności w przypadku większych zestawów danych
źródło
Można również użyć
dplyr
„sdistinct()
funkcję! Wydaje się, że jest bardziej wydajna niż opcje alternatywne, zwłaszcza jeśli masz mnóstwo obserwacji.źródło
ogólna odpowiedź może brzmieć na przykład:
wynik:
źródło
-which
, jeśli nie ma duplikatów, doprowadzi to do błędu, użyciedf[!(duplicated(df)), ]
może być bezpieczniejsze.Z
sqldf
:Rozwiązanie:
Wynik:
źródło
Lub możesz zagnieździć dane w kolumnach 4 i 5 w jednym wierszu za pomocą
tidyr
:Duplikaty kol. 2 i 3 są teraz usuwane do analizy statystycznej, ale dane z kol. 4 i 5 zostały zachowane w tibble i można wrócić do oryginalnej ramki danych w dowolnym momencie za pomocą
unnest()
.źródło
Usuń zduplikowane wiersze ramki danych
W tym zbiorze danych nie ma ani jednego zduplikowanego wiersza, więc zwrócił on taką samą liczbę wierszy jak w moich danych.
Usuń zduplikowane wiersze na podstawie jednej zmiennej
Funkcja .keep_all służy do zachowania wszystkich innych zmiennych w wyjściowej ramce danych.
Usuń zduplikowane wiersze na podstawie wielu zmiennych
Funkcja .keep_all służy do zachowania wszystkich innych zmiennych w wyjściowej ramce danych.
(z: http://www.datasciencemadesimple.com/remove-duplicate-rows-r-using-dplyr-distinct-function/ )
źródło
Ten problem można również rozwiązać, wybierając pierwszy wiersz z każdej grupy, w której grupa to kolumny, na podstawie których chcemy wybrać unikalne wartości (w przykładzie udostępnionym jest to tylko pierwsza kolumna).
Korzystanie z podstawy R:
W
dplyr
Lub używając
data.table
Jeśli musimy znaleźć unikalne wiersze na podstawie wielu kolumn, po prostu dodaj te nazwy kolumn w części grupującej dla każdej z powyższych odpowiedzi.
dane
źródło
Oto bardzo proste, szybkie
dplyr
/tidy
rozwiązanie:Usuń wiersze, które są całkowicie takie same:
Usuń wiersze, które są takie same tylko w niektórych kolumnach:
źródło