SORU
3 Temmuz 2010, CUMARTESİ


İki veri karşılaştırın.veri satırları bulmak için çerçeveler.yok çerçeve 1 veri.çerçeve 2

Aşağıdaki 2 Veri var.çerçeve:

a1 <- data.frame(a = 1:5, b=letters[1:5])
a2 <- data.frame(a = 1:3, b=letters[1:3])

A1 a2 olmayan satırı bulmak istiyorum.

Bir bu tip işlemler fonksiyonuna var mı?

(s.s: bunun için bir çözüm, eğer birileri daha hazırlanmış bir kod yapımı eğer ben sadece merak ediyorum) yazdım

İşte benim çözüm:

a1 <- data.frame(a = 1:5, b=letters[1:5])
a2 <- data.frame(a = 1:3, b=letters[1:3])

rows.in.a1.that.are.not.in.a2  <- function(a1,a2)
{
    a1.vec <- apply(a1, 1, paste, collapse = "")
    a2.vec <- apply(a2, 1, paste, collapse = "")
    a1.without.a2.rows <- a1[!a1.vec %in% a2.vec,]
    return(a1.without.a2.rows)
}
rows.in.a1.that.are.not.in.a2(a1,a2)

CEVAP
29 Ocak 2013, Salı


SQLDF güzel bir çözüm sağlar

a1 <- data.frame(a = 1:5, b=letters[1:5])
a2 <- data.frame(a = 1:3, b=letters[1:3])

require(sqldf)

a1NotIna2 <- sqldf('SELECT * FROM a1 EXCEPT SELECT * FROM a2')

Ve her ikisi de veri iletimi ile olan satır:

a1Ina2 <- sqldf('SELECT * FROM a1 INTERSECT SELECT * FROM a2')

Dplyr yeni sürümü fonksiyon anti_join, karşılaştırmalar, tam olarak bu tür vardır

require(dplyr)

anti_join(a1,a2)

Ve ayrıca a2 olan a1 filtre satırları semi_join

semi_join(a1,a2)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ICON

    ICON

    19 EKİM 2011
  • Kamikazeepanda

    Kamikazeepan

    5 ŞUBAT 2006
  • The Fashion Sight

    The Fashion

    22 AĞUSTOS 2011