2012-12-07 5 views
11

Istnieje similar question dla PHP, ale pracuję z R i nie jestem w stanie przetłumaczyć rozwiązania na mój problem.Jak mogę usunąć wszystkie duplikaty, aby BRAK pozostały w ramce danych?

Mam tę ramkę danych z 10 rzędami i 50 kolumnami, gdzie niektóre wiersze są absolutnie identyczne. Jeśli używam unikalnego na nim, otrzymuję jeden wiersz na - powiedzmy - "typ", ale naprawdę chcę tylko uzyskać te wiersze, które pojawiają się tylko raz. Czy ktoś wie, jak mogę to osiągnąć?

Mogę rzucić okiem na klastrów i mapy termiczne, aby posortować je ręcznie, ale mam większe ramki danych niż wyżej wymienione (z maksymalnie 100 wierszy), gdzie jest to nieco trudne.

Odpowiedz

33

To wyodrębnić wiersze, które pojawiają się tylko raz (przy założeniu ramki danych o nazwie df):

df[!(duplicated(df) | duplicated(df, fromLast = TRUE)), ] 

Jak to działa: Funkcja duplicated testy czy linia pojawia się co najmniej po raz drugi zaczynając od linii pierwszej. Jeśli użyto argumentu fromLast = TRUE, funkcja zaczyna się od ostatniej linii.

Oba wyniki boolowskie są łączone z | (logiczne "lub") w nowym wektorze, który wskazuje wszystkie linie pojawiające się więcej niż raz. Wynik tego jest zanegowany przy użyciu !, tworząc w ten sposób wektor boolowski, pokazujący linie pojawiające się tylko raz.

Powiązane problemy