2012-12-08 24 views
19

Aynı sütun adlarına (C) sahip iki veri çerçevem ​​(A, B) var, ancak bu sütunda farklı benzersiz değerler olabilir. Veri çerçevesindeki (A) sütununda (C) 'value' (B) olup olmadığını kontrol etmek istiyorum.Değer bir veri çerçevesinde olsun veya olmasın,

A = data.frame(C=c(1,2,3,4)) 
B = data.frame(C=c(1,3,4,7)) 

Yukarıdaki örnekte, ben '2' B mevcut olup olmadığını kontrol etmek istiyorum yoksa oldukça büyük dosyaları var ve her satırında bunu kontrol etmesi gerekir olarak değil döngü olmadan herhangi bir astar var mı. A sütunu C'nin hangi değerleri söyleyecektir

+2

'setdiff' ilgi – James

cevap

52

Kullanım %in%

A$C %in% B$C 

şöyle Ne döndürülür mantıksal vektör B.

içindedir. senin Örneğin belirli bir durumda elde edersiniz: Eğer A$C bir endeks A sıralarına ya da bir indeks olarak kullanabilirsiniz

A$C %in% B$C 
# [1] TRUE FALSE TRUE TRUE 

gerçek değerleri elde etmek için:

# as a row index 
A[A$C %in% B$C, ] # note the comma to indicate we are indexing rows 

# as an index to A$C 
A$C[A$C %in% B$C] 
[1] 1 3 4 # returns all values of A$C that are in B$C 

Biz da bunu taban alınabilir:

A$C[!A$C %in% B$C] 
[1] 2   # returns all values of A$C that are NOT in B$C 



belirli bir değeri B $ C olup olmadığını bilmek istiyorum Geçen ifadesi A $ C ikinci değer B $ C olup olmadığı söylerdim

2 %in% B$C # "is the value 2 in B$C ?" 
    # FALSE 

    A$C[2] %in% B$C # "is the 2nd element of A$C in B$C ?" 
    # FALSE 
+0

çekebilecek: Aynı işlevini kullanın. –

+0

Evet, kesinlikle. Orijinal örnekte “A $ C [2]' '2' dir, dolayısıyla netlik eksikliği. Umarım açıklığa kavuşturacak örneğimde yorumları düzenledim. –

İlgili konular