/// <summary>
        /// Creates a table with place holders for each series and statisitcal method as a column
        /// </summary>
        /// <param name="list"></param>
        /// <param name="sm"></param>
        /// <returns></returns>
        private static DataTable CreateMonthlySummaryTable(SeriesList list, StatisticalMethods sm, bool multiYear)
        {
            DateTime t1 = list.MinDateTime;
            DateTime t2 = list.MaxDateTime;

            m_minColumnIndex.Clear();
            m_maxColumnIndex.Clear();
            m_meanColumnIndex.Clear();
            m_sumColumnIndex.Clear();
            m_countColumnIndex.Clear();
            m_medianColumnIndex.Clear();


            DataTable tbl = new DataTable("Summary");

            tbl.Columns.Add("DateTime", typeof(DateTime));
            var textHelp = new SeriesListText(list);

            for (int i = 0; i < list.Count; i++)
            {
                // string s = list[i].Appearance.LegendText;
                var s = textHelp.Text[i];

                if ((sm & StatisticalMethods.Min) == StatisticalMethods.Min)
                {
                    tbl.Columns.Add("Min " + s, typeof(double));
                    m_minColumnIndex.Add(tbl.Columns.Count - 1);
                }

                if ((sm & StatisticalMethods.Max) == StatisticalMethods.Max)
                {
                    tbl.Columns.Add("Max " + s, typeof(double));
                    m_maxColumnIndex.Add(tbl.Columns.Count - 1);
                }
                if ((sm & StatisticalMethods.Mean) == StatisticalMethods.Mean)
                {
                    tbl.Columns.Add("Mean " + s, typeof(double));
                    m_meanColumnIndex.Add(tbl.Columns.Count - 1);
                }
                if ((sm & StatisticalMethods.Sum) == StatisticalMethods.Sum)
                {
                    tbl.Columns.Add("Sum " + s, typeof(double));
                    m_sumColumnIndex.Add(tbl.Columns.Count - 1);
                }
                if ((sm & StatisticalMethods.Count) == StatisticalMethods.Count)
                {
                    tbl.Columns.Add("Count " + s, typeof(int));
                    m_countColumnIndex.Add(tbl.Columns.Count - 1);
                }
                if ((sm & StatisticalMethods.Median) == StatisticalMethods.Median)
                {
                    tbl.Columns.Add("Median " + s, typeof(double));
                    m_medianColumnIndex.Add(tbl.Columns.Count - 1);
                }
            }

            InsertDates(t1, t2, tbl, multiYear);
            return(tbl);
        }
Beispiel #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="s">input series</param>
        /// <param name="sm">statisitical method</param>
        /// <param name="multiYear">when false returns series with 12 values</param>
        /// <returns></returns>
        public static Series MonthlySeries(Series s, StatisticalMethods sm, bool multiYear)
        {
            SeriesList lst = new SeriesList();

            lst.Add(s);
            DataTable tbl = MonthlySummary(lst, sm, multiYear);

            return(CreateSeries(lst, tbl, 0, 1));
        }
        //public static Series MonthlySeries(Series daily, StatisticalMethods sm)
        //{
        //    SeriesList lst = new SeriesList();
        //    lst.Add(daily);
        //    DataTable tbl = MonthlySummary(lst, sm);
        //    return CreateSeries(lst, tbl, 0, 1);
        //}

        /// <summary>
        /// Compute monthly statisitcs
        /// </summary>
        static DataTable MonthlySummary(SeriesList list, StatisticalMethods sm, bool multiYear)
        {
            DataTable tbl = CreateMonthlySummaryTable(list, sm, multiYear);

            for (int i = 0; i < tbl.Rows.Count; i++)
            {
                DateTime  t  = Convert.ToDateTime(tbl.Rows[i][0]);
                DateRange dr = new DateRange(
                    new DateTime(t.Year, t.Month, 1),
                    new DateTime(t.Year, t.Month,
                                 DateTime.DaysInMonth(t.Year, t.Month), 23, 59, 59));

                int[] months = new int[] { t.Month };


                for (int j = 0; j < list.Count; j++)
                {
                    Series subset;
                    if (multiYear)
                    {
                        subset = Math.Subset(list[j], dr);
                    }
                    else
                    {
                        subset = Math.Subset(list[j], months);
                    }

                    if ((sm & StatisticalMethods.Min) == StatisticalMethods.Min)
                    {
                        tbl.Rows[i][m_minColumnIndex[j]] = Math.MinPoint(subset).Value;
                    }

                    if ((sm & StatisticalMethods.Max) == StatisticalMethods.Max)
                    {
                        tbl.Rows[i][m_maxColumnIndex[j]] = Math.MaxPoint(subset).Value;
                    }

                    if ((sm & StatisticalMethods.Mean) == StatisticalMethods.Mean)
                    {
                        tbl.Rows[i][m_meanColumnIndex[j]] = Math.AverageOfSeries(subset);
                    }

                    if ((sm & StatisticalMethods.Count) == StatisticalMethods.Count)
                    {
                        tbl.Rows[i][m_countColumnIndex[j]] = Math.Count(subset);
                    }

                    if ((sm & StatisticalMethods.Sum) == StatisticalMethods.Sum)
                    {
                        tbl.Rows[i][m_sumColumnIndex[j]] = Math.Sum(subset);
                    }
                }
            }

            return(tbl);
        }
Beispiel #4
0
        public SeriesList AggregateAndSubset(StatisticalMethods aggregateType, MonthDayRange monthDayRange, int beginningMonth)
        {
            SeriesList rval = new SeriesList();

            foreach (Series s in this)
            {
                rval.Add(TimeSeries.Math.AggregateAndSubset(aggregateType, s, monthDayRange, beginningMonth));
            }
            return(rval);
        }
Beispiel #5
0
    /// <summary>
    /// The entry point of the program.
    /// </summary>
    private static void Main()
    {
        Student ivan = new Student();

        ivan.FirstName   = "Ivan";
        ivan.LastName    = "Ivanov";
        ivan.DateOfBirth = new DateTime(1992, 03, 17);

        Student ivanka = new Student();

        ivanka.FirstName   = "Ivanka";
        ivanka.LastName    = "Ivanova";
        ivanka.DateOfBirth = new DateTime(1993, 11, 3);

        Student asd = new Student();

        Console.WriteLine(
            "Is {0} older than {1}? -> {2}",
            ivan.FirstName,
            ivanka.FirstName,
            ivan.DateOfBirth.IsEarlierThan(ivanka.DateOfBirth));

        Console.WriteLine(GeometryMethods.CalcTriangleArea(3, 4, 5));

        Console.WriteLine(LanguageMethods.DigitToText(5));

        Console.WriteLine(StatisticalMethods.Max(5, -1, 3, 2, 14, 2, 3));

        ConsolePrinter.PrintNumber(1.3, 2);
        ConsolePrinter.PrintPercent(0.75, 0);
        ConsolePrinter.PrintAligned(2.30, 8);

        Console.WriteLine(GeometryMethods.CalcDistance(3, -1, 3, 2.5));
        Console.WriteLine("Horizontal? -> " + GeometryMethods.IsLineHorizontal(3, -1, 3, 2.5));
        Console.WriteLine("Vertical? -> " + GeometryMethods.IsLineVertical(3, -1, 3, 2.5));
    }
        public void TestSum3()
        {
            int sum = StatisticalMethods.Sum(-98);

            Assert.AreEqual(-98, sum);
        }
        public void TestMin4()
        {
            int min = StatisticalMethods.Min(7, 6, 0, 9);

            Assert.AreEqual(0, min);
        }
        public void TestAverage2()
        {
            double average = StatisticalMethods.Average();

            Assert.Fail();
        }
        public void TestAverage3()
        {
            double average = StatisticalMethods.Average(34);

            Assert.AreEqual(34, average);
        }
        public void TestMax3()
        {
            int min = StatisticalMethods.Max(23452);

            Assert.AreEqual(23452, min);
        }
        public void TestMax4()
        {
            int max = StatisticalMethods.Max(7, 6, 0, 9);

            Assert.AreEqual(9, max);
        }
        public void TestSum4()
        {
            int sum = StatisticalMethods.Sum(7, 6, 0, 9);

            Assert.AreEqual(22, sum);
        }
        public void TestSum2()
        {
            int sum = StatisticalMethods.Sum();

            Assert.Fail();
        }
        public void TestProduct2()
        {
            int product = StatisticalMethods.Product();

            Assert.Fail();
        }
        public void TestMin3()
        {
            int min = StatisticalMethods.Min(-902);

            Assert.AreEqual(-902, min);
        }
        public void TestMin2()
        {
            int min = StatisticalMethods.Min();

            Assert.Fail();
        }
        public void TestProduct4()
        {
            int product = StatisticalMethods.Product(7, 6, 1, 9);

            Assert.AreEqual(378, product);
        }
        public void TestProduct3()
        {
            int product = StatisticalMethods.Product(-42);

            Assert.AreEqual(-42, product);
        }
        public void TestMax1()
        {
            int min = StatisticalMethods.Max(null);

            Assert.Fail();
        }
        public void TestMax2()
        {
            int max = StatisticalMethods.Max();

            Assert.Fail();
        }
        private static SeriesList CreateSummaryList(SeriesList list, DataTable summaryTable, StatisticalMethods sm)
        {
            var summaryList = new SeriesList();

            int tableIndex = 1;

            for (int seriesIndex = 0; seriesIndex < list.Count; seriesIndex++)
            {
                if ((sm & StatisticalMethods.Min) == StatisticalMethods.Min)
                {
                    summaryList.Add(CreateSeries(list, summaryTable, seriesIndex, tableIndex++));
                }

                if ((sm & StatisticalMethods.Max) == StatisticalMethods.Max)
                {
                    summaryList.Add(CreateSeries(list, summaryTable, seriesIndex, tableIndex++));
                }

                if ((sm & StatisticalMethods.Mean) == StatisticalMethods.Mean)
                {
                    summaryList.Add(CreateSeries(list, summaryTable, seriesIndex, tableIndex++));
                }

                if ((sm & StatisticalMethods.Count) == StatisticalMethods.Count)
                {
                    summaryList.Add(CreateSeries(list, summaryTable, seriesIndex, tableIndex++));
                }

                if ((sm & StatisticalMethods.Sum) == StatisticalMethods.Sum)
                {
                    summaryList.Add(CreateSeries(list, summaryTable, seriesIndex, tableIndex++));
                }

                if ((sm & StatisticalMethods.Median) == StatisticalMethods.Median)
                {
                    summaryList.Add(CreateSeries(list, summaryTable, seriesIndex, tableIndex++));
                }
            }

            return(summaryList);
        }
        public void TestAverage4()
        {
            double average = StatisticalMethods.Average(7, 6, 0, 9);

            Assert.AreEqual(5.5, average);
        }