Tôi có sau data.table, dtgrouped2
:Có điều kiện tham gia vào data.table?
MonthNo Unique Total
1: 1 AAA 10
2: 1 BBB 0
3: 2 CCC 3
4: 2 DDD 0
5: 3 AAA 0
6: 3 BBB 35
7: 4 CCC 15
8: 4 AAA 0
9: 5 BBB 60
10: 5 CCC 0
11: 6 DDD 100
12: 6 AAA 0
Và một bảng, dt2
:
Unique1 StartDate EndDate Amount1 Amount2
1: AAA 0 1 7 0
3: AAA 1 2 5 0
2: AAA 2 4 3 2
Tôi muốn chèn Amount1 và AMOUNT2 từ dt2
để dtgrouped2
dựa trên logic sau trên " Duy nhất "được đánh giá cho mỗi hàng của dtgrouped2
:
filter(StartDate< MonthNo & EndDate>=MonthNo)
then MAX(EndDate)
then insert Amount1 as Amount1 and Amount2 as Amount2
Vì vậy, bạn có thể thấy rằng kết quả là khác nhau tùy thuộc vào hàng. Đây sẽ là đầu ra mong đợi:
Date MonthNo Unique Items Amounts Amount1 Amount2
Jan 1 AAA x 10 7 0
Jan 1 BBB y 2 NA NA
Feb 2 CCC x 3 NA NA
Feb 2 DDD y 15 NA NA
March 3 AAA y 20 3 2
March 3 BBB x 35 NA NA
April 4 CCC x 15 NA NA
April 4 AAA y 50 3 2
May 5 BBB x 60 NA NA
May 5 CCC y 70 NA NA
June 6 DDD x 100 NA NA
June 6 AAA y 20 NA NA
Tôi không hiểu đầu ra mong muốn của bạn. 1- Trường hợp cột 'Amounts' đến từ đâu? Nó cư trú như thế nào? (Nó không bằng với cột 'Tổng số'). 2- Trong hàng thứ 5, bạn có giá trị sai (?) Trong 'Amount1' và' Amount2', nó phải là '5' và' 0' tương ứng. 3 - Tại sao ở hàng cuối cùng, các giá trị 'Amount1' và' Amount2' không được điền? Nó phải là '3' và' 2' tương ứng, phải không? Dù sao, tôi nghĩ rằng bạn có thể sử dụng này: 'dt2 [dtgrouped2,. (Amount1, Amount2), on =. (Unique1 = duy nhất, StartDate
Xin lỗi, vâng, bạn hoàn toàn chính xác, logic nên có được Ngày kết thúc> = MonthNo. Bảng kết quả là không được nhóm lại, đó là lý do cho các cột bổ sung. Cảm ơn bạn, tôi sẽ cố gắng này! – Topographical
Cảm ơn bạn David, điều này đã làm việc! Cảm ơn một tấn. – Topographical