Giả sử tôi có hai cột tên. Tất cả các tên trong cột đầu tiên nằm trong cột thứ hai, nhưng theo thứ tự ngẫu nhiên, VÀ một số trong số đó không phải là các kết quả khớp hoàn hảo. Vì vậy, có thể trong một cột có tên John Smith và trong John_smith thứ hai hoặc JonSmith. Có cách nào R khá đơn giản để thực hiện một "trận đấu hay nhất" không?Kết nối chuỗi không hoàn hảo
Trả lời
Với một số dữ liệu như thế này:
df<-data.frame(x=c('john doe','john smith','sally struthers'),y=c('John Smith','John_smith','JonSmith'))
Bạn có thể nhận được một chặng đường dài với một vài gsub
s và tolower
:
df$y.fix <- gsub('[[:punct:]]', ' ', df$y)
df$y.fix <- gsub(' ', '', df$y.fix)
df$y.fix <- tolower(df$y.fix)
df$x.fix <- tolower(gsub(' ', '', df$x))
Sau đó agrep
là những gì bạn sẽ muốn:
> agrep(df$x.fix[2], df$y.fix)
[1] 1 2 3
để biết thêm các chuỗi khó hiểu phức tạp, hãy xem this post from last week.
Bạn đã đi trước tôi một chút. –
Joris, hiệp sĩ không chết. –
+1 cho 'tolower()' và 'gsub()' ra những thứ mà nếu không sẽ bị vượt quá khoảng cách levenshtein. –
- 1. Vẽ một đường cong hoàn hảo kết nối ba điểm
- 2. * Liên kết hình ảnh dọc * hoàn hảo
- 3. được ký bằng băm hoàn hảo gần như hoàn hảo
- 4. Hình vuông hoàn hảo hay không?
- 5. gần băm hoàn hảo hoặc hoàn hảo của địa chỉ bộ nhớ trong c
- 6. Chức năng băm hoàn hảo và băm hoàn hảo động - giải thích xin vui lòng?
- 7. Hoàn hảo Chuyển tiếp đến async lambda
- 8. Chuyển tiếp hoàn hảo trong D?
- 9. Hàm băm hoàn hảo tối thiểu
- 10. Không thể chuyển đổi Bitmap thành Chuỗi Base64 hoàn hảo trong Android?
- 11. Môi trường phát triển .NET "Hoàn hảo"?
- 12. Pixel hoàn hảo (firebug addon) thay thế
- 13. CSS - Lưới có ô vuông hoàn hảo
- 14. Máy tính Eulers Chức năng hoàn hảo
- 15. min và chuyển tiếp hoàn hảo
- 16. hàm băm hoàn hảo và lợi ích
- 17. Hình vuông hoàn hảo giữa hai số
- 18. Chuỗi kết nối EDMX
- 19. Tra cứu bảng băm - với băm hoàn hảo, trong C
- 20. Đặt hàng 1:17 theo cặp hình vuông hoàn hảo
- 21. Dịch vụ web hoàn hảo Soap (Wsdl) trong php
- 22. Chuỗi kết nối để kết nối với .MDF
- 23. Làm thế nào để kết hợp std :: bind(), mẫu variadic và chuyển tiếp hoàn hảo?
- 24. Kết nối trọn đời = 0 trong chuỗi kết nối MySql
- 25. Hiểu chuỗi kết nối MongoDb
- 26. EF4 và Chuỗi kết nối
- 27. C# - làm nổi bật cú pháp hoàn hảo
- 28. Điểm ảnh tuyệt đối OpenGL Pixel hoàn hảo
- 29. Cách tạo pixel hoàn hảo Line2D trong - Graphics2D
- 30. C++ 11 std :: chức năng và chuyển tiếp hoàn hảo
Nếu bạn có nhiều cột hơn chỉ tên và họ (ví dụ: bạn cũng có ngày sinh và địa chỉ, hoặc bất kỳ thứ gì) và muốn tìm các hàng có thể khớp, hãy xem gói 'RecordLinkage'. http://cran.r-project.org/web/packages/RecordLinkage/index.html –