Hatanın bilgilendirici kısmı, üzerinde çalıştığınız verilerin bir S4 sınıfı nesnesidir ve bu nedenle yuvalar içermesidir. Bu, veri çerçevenizi içeren uygun "@verta" yuvasında çalışmanız gerektiği anlamına gelir.
NA değerlerine sahip "tüm" satırları silmek istiyorsanız, veri çerçevesi yuvasında na.omit kullanabilirsiniz. Bu, sp nesnesi boyunca ilerler ve diğer yuvalardaki ilişkili noktaları / çokgenleri kaldırır.
shape@data <- na.omit(shape@data)
Belirli bir sütundaki NA'lı satırları kaldırmak istiyorsanız şunları kullanabilirsiniz:
shape@data <- shape[!is.na(shape@data$col) ,]
**** Güncelleme 03/08/2016 Artık sp nesnelerinde çalışan yerel bir birleştirme işlevi var. Birleştirme işlemini diğer tüm dataframe'lerde yaptığınız gibi çağırabilirsiniz. Ancak x argümanı bir sp SpatailDataFrame sınıf nesnesidir ve y birleştirmek istediğiniz herhangi bir data.frame'dir. Referans amacıyla orijinal cevabı bırakıyorum.
Ayrıca bir sp nesnesine katılmak için birleştirme işlevini kullanamayacağınızı belirtmek gerekir. Birleştirme işlevi, işlem sırasında sp nesnesindeki iç ilişkiyi kesen verileri kullanır. Bu, maalesef, yaygın olarak reklamı yapılmayan bir şey. Bir veri çerçevesini bir sp nesnesinin @ veri yuvasına birleştirmek için eşleştirmeyi bu şekilde kullanabilirsiniz.
shape@data = data.frame(shape@data, OtherData[match(sdata@data$IDS, OtherData$IDS),])
Nerede; şekil, şekil dosyanızdır, IDS, birleştirmek istediğiniz tanımlayıcıdır ve OtherData, şekil ile birleştirmek istediğiniz veri çerçevesidir. IDS'nin iki veri kümesinde farklı adlar olabileceğini, ancak aslında aynı değerlerin (bulanık değil) olması gerektiğini unutmayın.
Alternatif olarak bu işlevi kullanabilirsiniz.
join.sp.df <- function(x, y, xcol, ycol) {
x$sort_id <- 1:nrow(as(x, "data.frame"))
x.dat <- as(x, "data.frame")
x.dat2 <- merge(x.dat, y, by.x = xcol, by.y = ycol)
x.dat2.ord <- x.dat2[order(x.dat2$sort_id), ]
x2 <- x[x$sort_id %in% x.dat2$sort_id, ]
x2.dat <- as(x2, "data.frame")
row.names(x.dat2.ord) <- row.names(x2.dat)
x2@data <- x.dat2.ord
return(x2)
}
Nerede; x = sp SpatialDataFrame nesnesi, y = x ile birleştirilecek dataframe nesnesi, xcol = sp nesnesindeki sütun adını birleştir (alıntı yapmanız gerekir), ycol = dataframe nesnesindeki sütun adını birleştir (alıntı yapmanız gerekir).
Nedense @Kelly sorusuna yorum yapamıyorum, bu yüzden orijinal cevabımı düzenliyorum. Hangi R ve SP sürümünü çalıştırdığınızı kontrol edin? Öğrenmek için SessionInfo () komutunu çalıştırabilirsiniz. @Data nesnesini işlerken diğer veri yuvalarındaki ilişkili nesneleri kaldırma davranışı yalnızca son çift sp sürümünde mevcuttur. Geçerli bir sürümü çalıştırmıyorsanız, paketi paketler menüsü altındaki "Paketleri güncelle" ile güncellemeyi deneyin. > = Windows Vista çalışıyorsa yönetici olarak çalıştırdığınızdan emin olun. Ayrıca, nesne boyutlarından önce ve sonra, yani satır / sütun sayısını temsil eden dim (şekil) öğelerine de bakın. Satır sayısı, özellik nesnelerinin sayısına karşılık gelir. Uzamsal nesnedeki satır sayısının @ veri yuvasındaki satır sayısıyla eşleşip eşleşmediğini kontrol ederek sonuçları kontrol edebilirsiniz, yani dim (şekil);