Combinar datos por marca de tiempoNecesito fusionar dos conjuntos de datos diferentes. El primero, A, tiene datos recopilados cada 2 minutos. El segundo, B, tiene datos recopilados solo cuando una medición cruzó un umbral.
Una muestra
2017-01-21:00:02:00, 1, 2, 3, 4
2017-01-21:00:04:00, 2, 3, 4, 5
2017-01-21:00:06:00, 3, 4, 5, 6
...
muestra B
2017-01-21:00:02:05, 4500
2017-01-21:00:05:14, 5700
...
Será suficiente colocar los datos B en la fila A más cercana. Por ejemplo, los datos B en 2017-01-21:00:05:14 podrían colocarse en A-row=2017-01-21:00:06:00
Tengo alrededor de 170 000 filas en A; y unas 4.000 filas en B.
Gracias
Re: Fusionar datos por marca de tiempoMuchas gracias txnelson! Lo probaré.
-gzhou
Re: Fusionar datos por marca de tiempoAquí hay una modificación del script que creo que le dará lo que quiere.Ahora, no se ha probado por completo, ya que no proporcionó tablas de datos de muestra, pero creo que debería funcionar, si la variable en la que está colocando su número de experimento se llama "Experimento".
Names Default To Here( 1 );
Clear Symbols();
list_tables = {};
For( i = 1, i <= N Table(), i++,
Insert Into( list_tables, Data Table( i ) << get name )
); //sets up names of data tables to pick from
dt1 = Data Table( list_tables[1] );
dt2 = Data Table( list_tables[2] ); //Reasonable Starting point
win_tableselect = New Window( "Select Tables",
<<MODAL></MODAL>Re: Fusionar datos por marca de tiempo¿Cómo podría modificar este script JMP para permitirle unir dos tablas de datos haciendo coincidir dos variables diferentes?
Por ejemplo: en el conjunto de datos a continuación, me gustaría hacer coincidir el número de experimento y luego hacerlo coincidir con el mínimo local de la marca de tiempo para unir los valores de la tabla de datos 2 en la tabla de datos 1 de modo que los valores de la tabla de datos 2 estén en una fila de la marca de tiempo más cercana en la tabla de datos 1 con el número de experimento correcto.
Una muestra
Experimento 1, 2017-01-21:00:02:00, 1, 2, 3, 4
Experimento 1, 2017-01-21:00:04:00, 2, 3, 4, 5
Experimento 2, 2017-01-21:00:06:00, 3, 4, 5, 6
...
muestra B
Experimento 1, 2017-01-21:00:02:05, 4500
Experimento 2, 2017-01-21:00:05:14, 5700
¡Cualquier ayuda sería útil!
Gracias
Re: Fusionar datos por marca de tiempoJim,
Muchas gracias. Creo que ya estamos listos.
Re: Fusionar datos por marca de tiempoHubo un par de elementos que no funcionaron con las últimas versiones de JMP en el script al que se hizo referencia.Los volví a trabajar y eliminé el requisito de ejecutar esto como una llamada de función.Entonces, todo lo que tiene que hacer es abrir las 2 tablas de datos y ejecutar el script a continuación.Lo ejecuté contra sus datos y funcionó bien.No estoy seguro de que los resultados sean exactamente lo que desea, pero le dará una tabla de datos con la que puede trabajar.
Names Default To Here( 1 );
Clear Symbols();
list_tables = {};
For( i = 1, i <= N Table(), i++,
Insert Into( list_tables, Data Table( i ) << get name )
); //sets up names of data tables to pick from
dt1 = Data Table( list_tables[1] );
dt2 = Data Table( list_tables[2] ); //Reasonable Starting point
win_tableselect = New Window( "Select Tables",
<<MODAL></MODAL>Re: Fusionar datos por marca de tiempoadjuntando subconjuntos de los archivos que estoy usando
Re: Fusionar datos por marca de tiempoGracias por la rápida respuesta.
Puse una columna de "fecha y hora en segundos" en cada tabla, por lo que todos los puntos de datos tienen una marca de tiempo.
Ejecuto el script, me pide que elija una columna en cada tabla, lo que hago seleccionando la columna "fecha y hora en segundos" en cada tabla.
El resultado final es solo una columna adicional en dt2 llamada "Loc Min" que es simplemente números enteros ascendentes 1,2,3,..
¿Está fallando la función o me estoy perdiendo algo sobre cómo usarla?
Re: Fusionar datos por marca de tiempohttps://community.jmp.com/t5/Discussions/Join-Question-timestamp-range-kinda-sorta/mp/20828
Esto lo hará o al menos lo pondrá en el camino correcto. Y es estúpidamente rápido.