2013-06-03 35 views
5

Tôi đang tìm kiếm để khớp với nhiều tiêu chí chuỗi và sau đó đặt hàng trong hàng R bằng cách sử dụng grepl để tìm kết quả phù hợp. Tôi đã tìm thấy một giải pháp tốt đẹp từ another post nơi một số mã cụ thể được sử dụng (nhưng bạn có được ý tưởng): subset(GEMA_EO5, grepl(paste(l, collapse="|"),GEMA_EO5$RefSeq_ID))Kết hợp chuỗi trên hai cột trong [R]

Tôi tự hỏi nếu nó có thể grepl trong hai cột, thay vì chỉ RefSeq_ID trong ví dụ trên. Đó là, trong grepl thông qua bất kỳ phương pháp khác. Nói cách khác, tôi muốn tìm các tùy chọn trong l không chỉ trong một cột, nhưng trong hai (hoặc nhiều). Điều này có thể không?

ví dụ: 3 cột, a b và c. Tôi muốn các tiêu chí như vậy mà T (hàng 3 và 4) được chọn, mặc dù định dạng "T I" trong (3, b). nó phải xác định cả hai (4, a) và (3, b), do đó liên kết đến câu hỏi trước. Tôi muốn nó nhìn vào cột a và cột b, không phải cái này hay cái kia.

a b  c 

    A A C P L 
    V V B W E E 
    W T I P J G 
    T W P J 
+0

Có vẻ như bạn chỉ có thể sử dụng '|' để kết hợp nhiều kết quả của nhiều cuộc gọi đến 'grepl'. Hoặc làm nóng khung dữ liệu của bạn và thực hiện một lần quét. Bạn có một ví dụ cụ thể hơn? – Peyton

+0

Bạn cũng có thể chỉ cần dán các cột lại với nhau. – Peyton

+0

@Peyton Tôi đã chỉnh sửa bài đăng để bao gồm một ví dụ – kirk

Trả lời

6

Dưới đây là một số dữ liệu demo để hiển thị cách làm việc này:

set.seed(1234) 
dat <- data.frame(A = sample(letters[1:3],10,TRUE), 
        B = sample(letters[1:3],10,TRUE)) 

Sử dụng [ để tập hợp con làm cho điều này rất nhiều rõ ràng hơn trong quan điểm của tôi - chúng ta có thể sử dụng grepl để cung cấp cho một vector logic dựa trên một phù hợp và sử dụng | để kết hợp hai thử nghiệm (trên nhiều cột). Nếu bạn muốn một tập hợp con của tất cả các hàng có chứa 'a' trong một trong hai cột:

dat.a <- dat[with(dat, grepl("a", A)|grepl("a", B)),] 
    A B 
1 b a 
2 b a 
3 a c 
5 a a 
9 a a 
+1

Cảm ơn, công trình này, nếu tôi sử dụng 'dat [với (dat, grepl (dán (l, collapse =" | "), df $ c | grepl (dán (l, collapse =" | "), df $ b)),] 'để tính khoảng cách chuỗi – kirk

+0

trong đó l là danh sách các tiêu chí chuỗi để đối sánh như trong bài đăng được liên kết trong câu hỏi – kirk

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