Ho due dataframes ciascuna con più righe per ID. Ho bisogno di restituire la data più vicina e i dati relativi dal secondo dataframe in base all'ID e alla data del primo dataframe - aggiungendo i dati relativi al primo dataframe. Questo deve anche funzionare con NA
s presenti nel secondo dataframe. Dati Esempio:Unire data più vicina, e relative variabili da un altro dataframe dal gruppo
set.seed(42)
df1 <- data.frame(ID = sample(1:3, 10, rep=T), dateTarget=(strptime((paste
(sprintf("%02d", sample(1:30,10, rep=T)), sprintf("%02d", sample(1:12,10, rep=T)),
(sprintf("%02d", sample(2013:2015,10, rep=T))), sep="")),"%d%m%Y")), Value=sample(15:100, 10, rep=T))
df2 <- data.frame(ID = sample(1:3, 10, rep=T), dateTarget=(strptime((paste
(sprintf("%02d", sample(1:30,20, rep=T)), sprintf("%02d", sample(1:12,20, rep=T)),
(sprintf("%02d", sample(2013:2015,20, rep=T))), sep="")),"%d%m%Y")), ValueMatch=sample(15:100, 20, rep=T))
Qualcosa da base
preferibile - split
e una miscela di apply
famiglia?
Il tavolo finale sarebbe simile:
ID dateTarget Value dateMatch ValueMatch
1 3 22-02-15 52 09-03-15 94
2 1 29-12-14 18 06-12-14 88
3 3 08-12-15 98 06-07-15 48
4 2 14-01-13 52 08-04-13 77
5 2 29-07-15 97 01-08-15 68
6 3 30-05-13 91 01-04-13 85
7 1 04-11-13 70 21-02-14 35
8 2 15-06-15 98 01-08-15 68
9 3 17-11-14 68 15-12-14 95
P.S. Ci sono modi migliori per generare date casuali (non usando seq.Date
)?
Per la vostra "P.S." dovresti essere in grado di adattare http://stackoverflow.com/questions/14720983/efficiently-generate-a-random-sample-of-times-and-dates-between-two-dates con un 'as.Date' al fine della funzione (e, forse, un 'format' se ne avete bisogno in'% d-% m-% y' nella cornice di dati) – hrbrmstr
si può anche fare qualcosa di simile 'Sys.Date() + campione (-1000 : 1000, 20) 'se non ti preoccupi troppo delle date di inizio/fine –