Çoğaltılmış satır veri çerçevesini R [kapalı] 'dan çıkarma


71

Yinelenen satırları bu örnek veri çerçevesinden nasıl kaldırabilirim?

A   1
A   1
A   2
B   4  
B   1
B   1
C   2
C   2

Her iki sütuna göre kopyaları kaldırmak istiyorum:

A   1
A   2
B   4
B   1
C   2

Sipariş önemli değil.


@whuber bu SO'ya taşınmamalı mı?
saat

@Llopis Evet, ama şimdi bunu yapmak için çok geç - ve başlangıçta kapattığımızda çok geçti. Bu tür bir soru, yıllar önce konuyla ilgili (sınır çizgisi) kabul edildi, ancak bugünlerde hızlı bir şekilde taşınacaktır.
whuber

Yanıtlar:


115

unique()Gerçekten de sorunuzu cevaplar, ancak aynı sonuca ulaşmak için başka bir ilgili ve ilginç fonksiyon duplicated().

Hangi satırların çoğaltıldığını aramanıza olanak tanır.

a <- c(rep("A", 3), rep("B", 3), rep("C",2))
b <- c(1,1,2,4,1,1,2,2)
df <-data.frame(a,b)

duplicated(df)
[1] FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE  TRUE

> df[duplicated(df), ]
  a b
2 A 1
6 B 1
8 C 2

> df[!duplicated(df), ]
  a b
1 A 1
3 A 2
4 B 4
5 B 1
7 C 2

2
'Çoğaltılmış' işlevinden bahsettiğiniz için teşekkür ederiz. Sütunların bir alt kümesine göre kopyalanan satırları silmek için kullanılabilir.
Joko

51

Sen arıyorsun unique().

a <- c(rep("A", 3), rep("B", 3), rep("C",2))
b <- c(1,1,2,4,1,1,2,2)
df <-data.frame(a,b)
unique(df)

> unique(df)
  a b
1 A 1
3 A 2
4 B 4
5 B 1
7 C 2

1
Sağol Bernd. Benzersiz sadece belirli bir sütun için uygulanabileceğini düşündüm. Tüm veri çerçevesi için de kullanılabileceğini bilmiyordum. tekrar teşekkürler
Jana
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.