Tôi khá mới lập trình và cũng có thể là data.table
trong R - vì vậy có lẽ câu hỏi này thực sự đơn giản, nhưng tôi đã tìm kiếm và không thể tìm thấy bất kỳ giải pháp nào.
Tôi đang cố gắng kết hợp 4 biến theo cặp và thêm một cột với giá trị tra cứu. Trong cơ sở, tôi sẽ làm merge(df1,df2, by.x=c("lsr","ppr"),by.y=c("li","pro"))
, trong đó df1 có 9 cols và df2 (2 là lsr và pro) df2 chỉ có 3, li, pro và "giá trị" mà tôi quan tâm, alpha.
Điều này làm việc tốt, nhưng khi tôi bắt đầu là một fan hâm mộ lớn của data.table
, tôi muốn làm điều này theo cách data.table - và bởi vì tôi có một số hàng triệu hàng - vì vậy cơ sở hợp nhất là chậm (tôi thấy , rằng tính năng by.x và by.y đang chờ xử lý dữ liệu. nhưng có thể có giải pháp thay thế). Xem một số dữ liệu mẫu dưới đây:data.table merge by multiple columns
df2:
alpha li pro
1: 0.5000000 0.01666667 0.01666667
2: 0.3295455 0.03333333 0.01666667
3: 0.2435897 0.05000000 0.01666667
4: 0.1917808 0.06666667 0.01666667
5: 0.1571429 0.08333333 0.01666667
df1:
demand rtime mcv mck ppr mlv mlk lsr
1: 0.3 1 357.57700 0.099326944 0.01666667 558.27267 0.155075741 0.01666667
2: 0.3 10 548.75433 0.152431759 0.01666667 614.30667 0.170640741 0.03333333
3: 0.3 11 314.55767 0.087377130 0.01666667 636.48100 0.176800278 0.03333333
4: 0.3 2 312.15033 0.086708426 0.01666667 677.48100 0.188189167 0.06666667
5: 0.3 3 454.47867 0.126244074 0.01666667 608.92067 0.169144630 0.01666667
---
6899196: 0.6 5 537.92673 0.149424093 1.00000000 537.92673 0.149424093 1.00000000
6899197: 0.6 6 277.34732 0.077040923 1.00000000 277.34732 0.077040923 1.00000000
6899198: 0.6 7 73.31484 0.020365235 1.00000000 73.31484 0.020365235 1.00000000
6899199: 0.6 8 32.04197 0.008900546 1.00000000 32.04197 0.008900546 1.00000000
6899200: 0.6 9 14.59008 0.004052799 1.00000000 14.59008 0.004052799 1.00000000
cuối cùng, có lẽ quan tâm là, rằng trong df2 Tôi có hàng độc đáo, và trong df1, tôi có rất nhiều các bản sao ở đối với LSR và ppr. Tôi cũng đã cố gắng thiết lập hai khóa và tham gia chúng theo cách data.table, và thêm một cột mới với alpha. Nhưng không thành công. Cảm ơn bạn cho tất cả sự giúp đỡ của bạn!
Nếu bạn không cần tham gia bên ngoài, bạn chỉ có thể làm một trái, phải tham gia hoặc tham gia bên trong bằng cách sử dụng tham gia nhị phân. Câu hỏi là cái bạn muốn. Mặc dù đánh giá bởi mã R cơ bản của bạn, nó có vẻ như bạn wan một tham gia bên trong? Ngoài ra, bạn muốn giữ cột nào? Bạn cũng không có cột 'pro' trong' df1' –
Cảm ơn. Thực ra tôi tin rằng, trong trường hợp này, các kết nối bên trong và bên trái là như nhau, vì tất cả các kết hợp của lsr và ppr, hoặc của li và pro đều được bao gồm trong cả df1 và df2. Và không có chuyên nghiệp trong df1 là một lỗi đánh máy !! Xin lỗi cho điều đó, tôi có nghĩa là, ppr trong df1, tôi sẽ chỉnh sửa và sửa nó. Tôi muốn giữ tất cả các cột từ df1 và thêm alpha làm cột mới –
Nếu tất cả những gì bạn cần là tham gia trái với 'df1' trong khi cập nhật cột' alpha', nó là một phép nối nhị phân đơn giản. Hãy thử 'setkey (df1, lsr, ppr); setkey (df2, li, pro); df1 [df2, alpha: = i.alpha]; df1' –