2012-11-21 35 views
8

Tôi đã sau hai khung dữ liệu:R - Thêm giá trị vào khung dữ liệu phù hợp với một tiêu chí nhất định

d <- data.frame(c1 = c("A","A","B","C","A","C","D","D")) 

map <- data.frame(c1 = c("A","B","C","D"), c2 = c(12,14,16,25)) 

Làm thế nào tôi có thể thêm một cột gọi là "trận đấu" vào khung dữ liệu d có chứa giá trị tương ứng được tìm thấy trong dữ liệu khung bản đồ? Vì vậy, khung dữ liệu d sẽ trông giống như:

A 12 
A 12 
B 14 
C 16 
A 12 
C 16 
D 25 
D 25 

Rất cám ơn trước!

Trả lời

10

Sử dụng chức năng gọi match:

d$match <- map$c2[match(d$c1,map$c1)] 

Và vì cách các mức được quy định, bạn cũng có thể làm:

d$match <- map$c2[d$c1] 

Nhưng này chỉ hoạt động nếu mỗi hàng trong match trùng khớp các mức của yếu tố c1 theo thứ tự.

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