Có cách nào tốt hơn để nối các bảng dữ liệu trong R trong đó các giá trị thời gian chính gần không, nhưng không chính xác giống nhau không? Ví dụ, giả sử tôi có một bảng dữ liệu kết quả được đưa ra cho khoảng thời gian khác nhau:Tham gia dữ liệu R.trong đó các giá trị khóa không chính xác bằng nhau - kết hợp các hàng với thời gian gần nhất
DT1 = data.table(x=rep(c("a","b","c"),each=3), time=c(10,30,60), v=1:9)
Ở đây, chúng tôi có một số giá trị (v) đối với các loại khác nhau (x) thực hiện tại thời điểm khác nhau (thời gian). Bây giờ giả sử rằng tôi có dữ liệu từ một nguồn cung cấp một số giá trị thời gian cho các hạng mục khác nhau:
DT2=data.table(x=rep(c("a","b","c"),each=1),time=c(10,10,60))
tôi có thể quan tâm cố gắng để phù hợp với thời gian trong DT2 là chặt chẽ nhất có thể để dt1 để dự đoán một giá trị, v, cho các loại DT2 của tôi. Tôi muốn làm điều gì đó như
setkeyv(DT2,c("x","time"))
merge(DT1,DT2,by=c("time","v")
nào trả về:
time x v
1: 10 a 1
2: 10 b 4
3: 60 c 9
Nhưng nếu thời gian của tôi không có độ chính xác giống nhau không? Ví dụ:
DT2=data.table(x=rep(c("a","b","c"),each=1),time=c(17,54,3))
Có cách nào để thực hiện quá trình hợp nhất tương tự nhưng thời gian chọn của DT2 gần với DT1? Đó là 17 sẽ là gần 30, 54 gần 60, và 3 gần 10?
Nếu ví dụ đơn giản này không rõ ràng, tôi sẽ giải thích ngắn gọn vấn đề lớn hơn mà tôi đang gặp phải. Tôi có một bảng dữ liệu với các cột: thể loại, thời gian, output1, output2 ... Có hàng trăm loại với thời gian liên quan. Tôi có thể muốn rút đầu ra 1 cho tất cả các danh mục tại một thời điểm cụ thể. Kể từ khi thời gian được lấy mẫu không có logic rõ ràng, đôi khi thời gian được làm tròn đến giây gần nhất; trong các trường hợp khác, số lần được làm tròn đến phút gần nhất hoặc thậm chí 10 phút.
Tôi có thể viết một kịch bản để viết lại thời gian ở định dạng phổ biến hơn, nhưng tôi tò mò nếu có một giải pháp data.table slick mà tôi đã không nhìn thấy. Tôi đã khám phá sự hợp nhất lăn mà không thành công.
Cố gắng hợp nhất (..., tất cả = TRUE) và tổng hợp các hàng như theo ý thích của bạn. – bfb