2013-08-22 23 views
6

Quarter ve CustomerID dahil olmak üzere birçok sütun içeren bir veri çerçevem ​​var. Bunun içinde Quarter ve CustomerID'un benzersiz kombinasyonlarını tanımlamak istiyorum. eg içinVeri çerçevesindeki iki sütundan benzersiz alan değerleri nasıl bulunur?

:

masterdf <- read.csv(text = " 
    Quarter, CustomerID, ProductID 
    2009 Q1, 1234,  1 
    2009 Q1, 1234,  2 
    2009 Q2, 1324,  3 
    2009 Q3, 1234,  4 
    2009 Q3, 1234,  5 
    2009 Q3, 8764,  6 
    2009 Q4, 5432,  7") 

İstediğim şey geçerli:

FilterQuarter  UniqueCustomerID 
2009 Q1   1234 
2009 Q2   1324 
2009 Q3   8764 
2009 Q3   1234 
2009 Q4   5432 

Nasıl R bunu yapmak? unique işlevini denedim, ancak istediğim gibi çalışmıyor.

+0

... masterdf orijinal dosyanın adıdır varsayar. Ancak, bu yeni verinin muhtemelen farklı boyutlara sahip bir veri çerçevesiyle nasıl birleştirileceği açık değildir. –

+0

Her iki sütun da benzersiz bir değere sahip olmak istiyorum, yani 2009 yılının 3. çeyreğinde Müşteri Kimliği 1234 varsa, gelmelidir. ama eğer benzersiz kullanırsam, sadece 2009 Q1'i alacaktır. – snehal

+0

Burada düzenlenmiş 2009 Q1 ve 2009 Q3'ün her ikisi de Müşteri Kimliği 1234 var, bu yüzden benzersiz bir işlev kullansaydım, 2009 Q1 ve 2009 Q3'ün her ikisine de gelmesini istiyorum. hızlı yanıtınız için teşekkür ederim. – snehal

cevap

10

OP kapsamındaki uzun yorumlar takip edilmeyi zorlaştırıyor.@ RomanLustrik tarafından işaret edildiği gibi arıyoruz.

masterdf[ ! duplicated(masterdf[ c("Quarter" , "CustomerID") ]) , ] 
# Quarter CustomerID 
#1 2009 Q1  1234 
#3 2009 Q2  1324 
#4 2009 Q3  1234 
#6 2009 Q3  8764 
#7 2009 Q4  5432 
+0

İstediğiniz gibi çıktısını aldığın için, senin komutunun @ SimonO101 yardımıyla. – snehal

+0

@ user2492230 'e hoşgeldiniz. Bunu çözebildiğimize sevindim! –

2

diğer basit yolu, R SQL sorguları kullanabilirsiniz aşağıda kodları kontrol etmektir ... böyle Orijinal data.frame alt küme için kullanın. Bu onun eşsiz `(Quarter, CustomerID)` çiftleri istiyor gibi görünüyor

library(sqldf) 
sqldf("select Quarter, CustomerID from masterdf group by 1,2") 
İlgili konular