This example illustrates the action of the Merge function under different settings of the Merge rule.
import com.imsl.stat.*; import java.text.*; public class TimeSeriesOperationsEx1 { public static void main(String args[]) throws ParseException { SimpleDateFormat dateFormat = new SimpleDateFormat("M/d/y"); TimeSeries ts1 = new TimeSeries(); TimeSeries ts2 = new TimeSeries(); /* Create dates in different increments */ ts1.setStartDate(dateFormat.parse("12/12/2010")); ts1.setDateIncrement(3); ts2.setStartDate(dateFormat.parse("12/12/2010")); ts2.setDateIncrement(5); int n = 10; double y1[] = new double[n]; double y2[] = new double[n]; /* Create series values */ for (int i = 0; i < n; i++) { y1[i] = (i + 1.0); y2[i] = -(i + 1.0); } ts1.setSeriesValues(y1); ts2.setSeriesValues(y2); double[][] values1 = ts1.getSeriesValues(); double[][] values2 = ts2.getSeriesValues(); System.out.println("Time series 1 \t \tTime series 2"); for (int i = 0; i < n; i++) { System.out.println(dateFormat.format(ts1.getDates()[i]) + "\t" + values1[i][0] + "\t" + dateFormat.format(ts2.getDates()[i]) + "\t" + values2[i][0]); } TimeSeriesOperations tsOps = new TimeSeriesOperations(); TimeSeries ts3 = tsOps.merge(ts1, ts2); double[][] values3 = ts3.getSeriesValues(); System.out.println("Merge result using the union (default) merge rule: "); System.out.println("Series length: " + ts3.getLength()); for (int i = 0; i < ts3.getLength(); i++) { System.out.println(dateFormat.format(ts3.getDates()[i]) + "\t" + values3[i][0]); } tsOps.setMergeRule(TimeSeriesOperations.MergeRule.INTERSECTION); ts3 = tsOps.merge(ts1, ts2); values3 = ts3.getSeriesValues(); System.out.println("Merge results using the intersection merge rule: "); System.out.println("Series length: " + ts3.getLength()); for (int i = 0; i < ts3.getLength(); i++) { System.out.println(dateFormat.format(ts3.getDates()[i]) + "\t" + values3[i][0]); } tsOps.setMergeRule(TimeSeriesOperations.MergeRule.UNION_MISSING); ts3 = tsOps.merge(ts1, ts2); values3 = ts3.getSeriesValues(); System.out.println("Merge results using the union with missing rule: "); System.out.println("Series length: " + ts3.getLength()); System.out.println("Number of missing values: " + ts3.getNumMissing()); for (int i = 0; i < ts3.getLength(); i++) { System.out.println(dateFormat.format(ts3.getDates()[i]) + "\t" + values3[i][0]); } } }
Time series 1 Time series 2 12/12/2010 1.0 12/12/2010 -1.0 12/15/2010 2.0 12/17/2010 -2.0 12/18/2010 3.0 12/22/2010 -3.0 12/21/2010 4.0 12/27/2010 -4.0 12/24/2010 5.0 1/1/2011 -5.0 12/27/2010 6.0 1/6/2011 -6.0 12/30/2010 7.0 1/11/2011 -7.0 1/2/2011 8.0 1/16/2011 -8.0 1/5/2011 9.0 1/21/2011 -9.0 1/8/2011 10.0 1/26/2011 -10.0 Merge result using the union (default) merge rule: Series length: 18 12/12/2010 0.0 12/15/2010 2.0 12/17/2010 -2.0 12/18/2010 3.0 12/21/2010 4.0 12/22/2010 -3.0 12/24/2010 5.0 12/27/2010 1.0 12/30/2010 7.0 1/1/2011 -5.0 1/2/2011 8.0 1/5/2011 9.0 1/6/2011 -6.0 1/8/2011 10.0 1/11/2011 -7.0 1/16/2011 -8.0 1/21/2011 -9.0 1/26/2011 -10.0 Merge results using the intersection merge rule: Series length: 2 12/12/2010 0.0 12/27/2010 1.0 Merge results using the union with missing rule: Series length: 18 Number of missing values: 16 12/12/2010 0.0 12/15/2010 NaN 12/17/2010 NaN 12/18/2010 NaN 12/21/2010 NaN 12/22/2010 NaN 12/24/2010 NaN 12/27/2010 1.0 12/30/2010 NaN 1/1/2011 NaN 1/2/2011 NaN 1/5/2011 NaN 1/6/2011 NaN 1/8/2011 NaN 1/11/2011 NaN 1/16/2011 NaN 1/21/2011 NaN 1/26/2011 NaNLink to Java source.