コード例 #1
0
 private static void AddCategoricalColumns(IDataWithAnnotationColumns mdata1, IDataWithAnnotationColumns mdata2,
                                           Parameters parameters, IList <int[]> indexMap, IDataWithAnnotationColumns result)
 {
     int[]        catCols        = parameters.GetParam <int[]>("Categorical columns").Value;
     string[][][] newCatColumns  = new string[catCols.Length][][];
     string[]     newCatColNames = new string[catCols.Length];
     for (int i = 0; i < catCols.Length; i++)
     {
         string[][] oldCol = mdata2.GetCategoryColumnAt(catCols[i]);
         newCatColNames[i] = mdata2.CategoryColumnNames[catCols[i]];
         newCatColumns[i]  = new string[mdata1.RowCount][];
         for (int j = 0; j < mdata1.RowCount; j++)
         {
             int[]           inds   = indexMap[j];
             List <string[]> values = new List <string[]>();
             foreach (int ind in inds)
             {
                 string[] v = oldCol[ind];
                 if (v.Length > 0)
                 {
                     values.Add(v);
                 }
             }
             newCatColumns[i][j] = values.Count == 0
                                         ? new string[0]
                                         : ArrayUtils.UniqueValues(ArrayUtils.Concat(values.ToArray()));
         }
     }
     for (int i = 0; i < catCols.Length; i++)
     {
         result.AddCategoryColumn(newCatColNames[i], "", newCatColumns[i]);
     }
 }
コード例 #2
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);
            }
        }
コード例 #3
0
ファイル: Transpose.cs プロジェクト: wengx006/perseus-plugins
        private static List <string[][]> GetCategoryColumns(IDataWithAnnotationColumns mdata)
        {
            List <string[][]> result = new List <string[][]>();

            for (int i = 0; i < mdata.CategoryColumnCount; i++)
            {
                result.Add(mdata.GetCategoryColumnAt(i));
            }
            return(result);
        }
コード例 #4
0
 /// <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);
     }
 }
コード例 #5
0
 private static List<string[][]> GetCategoryColumns(IDataWithAnnotationColumns mdata)
 {
     List<string[][]> result = new List<string[][]>();
     for (int i = 0; i < mdata.CategoryColumnCount; i++){
         result.Add(mdata.GetCategoryColumnAt(i));
     }
     return result;
 }