2012-10-17 30 views
5

Tôi đã chuẩn bị dữ liệu của mình và bằng cách nào đó tôi có ít dữ liệu hơn sau khi hợp nhất các tập dữ liệu của mình.hợp nhất dữ liệu và nhận một mất mát lớn dữ liệu

Vì tôi không có kinh độ và vĩ độ trong dữ liệu của tôi, tôi đã sử dụng đoạn mã sau sau khi tôi tải về các gói mã bưu điện (tel1 là dữ liệu của tôi chứa zipcodes)

merge <- merge(zipcode,tel1,by.x=c('zip'),by.y=c('zip_code')) 

Trước khi sáp nhập Tôi đã có 195956 quan sát, trong khi sau khi sáp nhập nó giảm xuống 180090, nhưng tôi không hiểu tại sao.

Theo ý kiến ​​của tôi, tôi chỉ sáp nhập chúng nơi zip là bằng zip_code và tôi đã thêm các thông tin từ các mã bưu điện dataset để tel1 thư mục của tôi

Sau đó tôi muốn loại bỏ các hàng có chứa NA vì việc hợp nhất không thể xác định bất kỳ số nào hoặc bất kỳ thứ gì. Tôi đã sử dụng mã này

final <- result[complete.cases(result),] 

Sau đó, số quan sát của tôi giảm xuống 51006 mà tôi không thể tin được. Không thể có quá nhiều sự không khớp trong dữ liệu của tôi.

Có mã nào khác mà tôi nên sử dụng không?

Sau đó tôi đã cố gắng để xóa các bản sao với mã

last <- with(final,final[order(state,latitude,longitude),]) 

nhưng số quan sát là phù hợp (51.006).

Tôi đã làm gì sai hoặc có cách nào để đưa dữ liệu của tôi vào tệp excel một lần nữa sau khi hợp nhất dữ liệu để tôi có thể kiểm tra thủ công xem có quá nhiều sự không khớp không? Cảm ơn

+0

Hãy thử sử dụng 'join' từ gói plyr, nó trực quan hơn nhiều so với hợp nhất. –

+2

bạn cũng có thể xem đối số 'all' để' hợp nhất'. 'hợp nhất (zipcode, tel1, by.x = 'zip', by.y = 'zip_code', all.y = TRUE)' – Justin

+0

cảm ơn @Justin điều này làm việc ra không mất mát ở tất cả, nhưng nếu tôi đi về với cuối cùng <- kết quả [complete.cases (kết quả),] để loại bỏ NA nó cho đến khi giảm xuống 51006 bất kỳ giải pháp cho điều đó? – user1741021

Trả lời

7

Có thể sử dụng đối số all để merge.

merge(zipcode, tel1, by.x='zip', by.y='zip_code', all.y=TRUE) 

Tuy nhiên, đối với các hàng không khớp với dữ liệu zipcode, sẽ có NA s. Vì vậy, nếu bạn sau đó na.rm hay cái gì về việc đó, bạn sẽ gió lên với cùng "mất dữ liệu"

Kiểm tra các mã zip cho các hàng nơi có NA trong các cột lat và lâu sau khi hợp nhất:

tel1[is.na(tel1$latitude) | is.na(tel1$longitude),] 

Đoán của tôi là chúng không phải là mã zip hợp lệ hoặc danh sách mã zip bạn chưa hoàn thành.

+0

Tôi gues các mã zip là tốt dữ liệu của tôi chỉ bao gồm một cột mà nhiều NA là do không có thông tin cho điều đó. đó là lý do tại sao tôi chỉ nên xóa các hàng nơi kinh độ và vĩ độ có NA. Nếu tôi thử mã cuối cùng <-complete.cases (kết quả [, c ('vĩ độ', 'kinh độ')]) Tôi không nhận được một tập dữ liệu mới như trước khi tôi nhận được giá trị – user1741021

+0

cảm ơn tôi đã nhận nó chỉ cần loại bỏ các danh sách ra của tệp excel trước khi nhập nó vào R;) – user1741021

Các vấn đề liên quan