2012-03-30 43 views
45

> 100 sütun içeren bir veri çerçevem ​​var ve yalnızca iki sütunu karşılaştırarak benzersiz satırları bulacağım. Bunun kolay olduğunu umuyorum, ancak unique veya duplicated ile çalışamıyorum.Yalnızca seçili sütunlarla bir veri çerçevesindeki benzersiz

id id2 somevalue 
1 1   x 
3 4   z 

ya:

id id2 somevalue 
1 1   y 
3 4   z 

(ya ben elde etmek istiyorum

data.frame(id=c(1,1,3),id2=c(1,1,4),somevalue=c("x","y","z")) 

id id2 somevalue 
1 1   x 
1 1   y 
3 4   z 

: Aşağıda ise

, ben sadece id ve ID2'nin kullanarak benzersiz istiyorum Benzersiz satırlardan hangisinin saklandığına dair tercihim yok

+0

Sizin İstenen çıkış iyi tanımlanmamıştır. X'i dahil etmeyi nasıl seçersiniz, y değil? Bu karar her tekrarlanan sıranın her bir sütunu için yapılmalı ve nasıl yapılacağına dair hiçbir belirti vermediniz. – joran

+0

'x' veya 'y' dahil olup olmadığından hiçbir tercihim yok. Soruyu güncelleyeceğim. – Ina

cevap

77

Tamam o seçtiğiniz olmayan çoğaltılamaz sütunda hangi değerin önemli değilse, bu oldukça kolay olmalıdır: duplicated çağrı İçinde

dat <- data.frame(id=c(1,1,3),id2=c(1,1,4),somevalue=c("x","y","z")) 
> dat[!duplicated(dat[,c('id','id2')]),] 
    id id2 somevalue 
1 1 1   x 
3 3 4   z 

, ben sadece dat sadece bu sütunları geçiyorum o Ben çoğaltmak istemiyorum. Bu kod otomatik olarak her zaman belirsiz değerlerin ilk değerini seçecektir. (Bu durumda, x.)

+0

Bu web sitesine göre bir veritable – Ferroao

+0

@Ferroao sürümü nedir, SQL http://www.dofactory.com/sql/select-distinct içinde mümkün değildir –

8

unique() kullanma:

dat <- data.frame(id=c(1,1,3),id2=c(1,1,4),somevalue=c("x","y","z"))  
dat[row.names(unique(dat[,c("id", "id2")])),] 
İlgili konular