예제 #1
0
        public static void CombineRows(this IDataWithAnnotationColumns mdata, List <int> rowIdxs, Func <double[], double> combineNumeric, Func <string[], string> combineString, Func <string[][], string[]> combineCategory, Func <double[][], double[]> combineMultiNumeric)
        {
            if (!rowIdxs.Any())
            {
                return;
            }
            var resultRow = rowIdxs[0];

            for (int i = 0; i < mdata.NumericColumnCount; i++)
            {
                var column = mdata.NumericColumns[i];
                var values = ArrayUtils.SubArray(column, rowIdxs);
                column[resultRow] = combineNumeric(values);
            }
            for (int i = 0; i < mdata.StringColumnCount; i++)
            {
                var column = mdata.StringColumns[i];
                var values = ArrayUtils.SubArray(column, rowIdxs);
                column[resultRow] = combineString(values);
            }
            for (int i = 0; i < mdata.CategoryColumnCount; i++)
            {
                var column = mdata.GetCategoryColumnAt(i);
                var values = ArrayUtils.SubArray(column, rowIdxs);
                column[resultRow] = combineCategory(values);
                mdata.SetCategoryColumnAt(column, i);
            }
            for (int i = 0; i < mdata.MultiNumericColumnCount; i++)
            {
                var column = mdata.MultiNumericColumns[i];
                var values = ArrayUtils.SubArray(column, rowIdxs);
                column[resultRow] = combineMultiNumeric(values);
            }
        }
 /// <summary>
 /// Add a number of empty rows to the table
 /// </summary>
 public static void AddEmptyRows(this IDataWithAnnotationColumns mdata, int length)
 {
     for (int i = 0; i < mdata.StringColumnCount; i++)
     {
         mdata.StringColumns[i] = mdata.StringColumns[i].Concat(Enumerable.Repeat(String.Empty, length)).ToArray();
     }
     for (int i = 0; i < mdata.NumericColumnCount; i++)
     {
         mdata.NumericColumns[i] = mdata.NumericColumns[i].Concat(Enumerable.Repeat(Double.NaN, length)).ToArray();
     }
     for (int i = 0; i < mdata.MultiNumericColumnCount; i++)
     {
         mdata.MultiNumericColumns[i] = mdata.MultiNumericColumns[i].Concat(Enumerable.Range(0, length).Select(_ => new double[0])).ToArray();
     }
     for (int i = 0; i < mdata.CategoryColumnCount; i++)
     {
         mdata.SetCategoryColumnAt(mdata.GetCategoryColumnAt(i).Concat(Enumerable.Repeat(new string[0], length)).ToArray(), i);
     }
 }