public static IEnumerable <string> GetVariableNamesForGrouping(IPreprocessingData preprocessingData, int maxDistinctValues = 20) { var variableNames = new List <string>(); for (int i = 0; i < preprocessingData.Columns; ++i) { int distinctValues = Int32.MaxValue; if (preprocessingData.VariableHasType <double>(i)) { distinctValues = preprocessingData.GetValues <double>(i).GroupBy(x => x).Count(); } else if (preprocessingData.VariableHasType <string>(i)) { distinctValues = preprocessingData.GetValues <string>(i).GroupBy(x => x).Count(); } else if (preprocessingData.VariableHasType <DateTime>(i)) { distinctValues = preprocessingData.GetValues <DateTime>(i).GroupBy(x => x).Count(); } if (distinctValues <= maxDistinctValues) { variableNames.Add(preprocessingData.GetVariableName(i)); } } return(variableNames); }
public void SetFilter(bool[] remainingRows) { filteredData = (IPreprocessingData)originalData.Clone(); filteredData.InTransaction(() => { var remainingIndices = Enumerable.Range(0, remainingRows.Length).Where(x => remainingRows[x]); foreach (var v in filteredData.VariableNames) { var ci = filteredData.GetColumnIndex(v); if (filteredData.VariableHasType <double>(ci)) { var values = filteredData.GetValues <double>(ci); var filteredValues = remainingIndices.Select(x => values[x]).ToList(); filteredData.SetValues(ci, filteredValues); } else if (filteredData.VariableHasType <DateTime>(ci)) { var values = filteredData.GetValues <DateTime>(ci); var filteredValues = remainingIndices.Select(x => values[x]).ToList(); filteredData.SetValues(ci, filteredValues); } else if (filteredData.VariableHasType <string>(ci)) { var values = filteredData.GetValues <string>(ci); var filteredValues = remainingIndices.Select(x => values[x]).ToList(); filteredData.SetValues(ci, filteredValues); } } }); OnFilterChanged(); }
private List <IFilter> CreateFilters(string match, ComparisonOperation comparisonOperation, int columnIndex) { IPreprocessingData preprocessingData = Content.FilterLogic.PreprocessingData; IStringConvertibleValue value; if (preprocessingData.VariableHasType <double>(columnIndex)) { value = new DoubleValue(); } else if (preprocessingData.VariableHasType <String>(columnIndex)) { value = new StringValue(); } else if (preprocessingData.VariableHasType <DateTime>(columnIndex)) { value = new DateTimeValue(); } else { throw new ArgumentException("unsupported type"); } value.SetValue(match); var comparisonFilter = new ComparisonFilter(preprocessingData, GetConstraintOperation(comparisonOperation), value, true); comparisonFilter.ConstraintColumn = columnIndex; return(new List <Filter.IFilter>() { comparisonFilter }); }
private static ICheckedItemList <StringValue> CreateVariableItemList(IPreprocessingData preprocessingData) { ICheckedItemList <StringValue> itemList = new CheckedItemList <StringValue>(); foreach (string name in preprocessingData.GetDoubleVariableNames()) { var n = new StringValue(name); bool isInputTarget = preprocessingData.InputVariables.Contains(name) || preprocessingData.TargetVariable == name; itemList.Add(n, isInputTarget); } return(new ReadOnlyCheckedItemList <StringValue>(itemList)); }
public PreprocessingTransformator(IPreprocessingData preprocessingData) { this.preprocessingData = (ITransactionalPreprocessingData)preprocessingData; originalColumns = new Dictionary <string, IList <double> >(); renamedColumns = new Dictionary <string, string>(); }
private FilteredPreprocessingData(FilteredPreprocessingData original, Cloner cloner) : base(original, cloner) { originalData = original.originalData; filteredData = original.filteredData; }
public void ResetFilter() { filteredData = null; OnFilterChanged(); }
public FilteredPreprocessingData(IPreprocessingData preprocessingData) : base() { originalData = preprocessingData; filteredData = null; }
public ComparisonFilter(IPreprocessingData constrainedValue, ConstraintOperation constraintOperation, object constraintData, bool active) : base(constrainedValue, constraintOperation, constraintData, active) { }
public PreprocessingTransformator(IPreprocessingData preprocessingData) { this.preprocessingData = (ITransactionalPreprocessingData)preprocessingData; originalColumns = new Dictionary<string, IList<double>>(); renamedColumns = new Dictionary<string, string>(); }
public TransformationContent(IPreprocessingData data, FilterLogic filterLogic) { Data = data; CheckedTransformationList = new CheckedItemList <ITransformation>(); FilterLogic = filterLogic; }
public TransformationContent(IPreprocessingData data, FilterLogic filterLogic) { Data = data; CheckedTransformationList = new CheckedItemList<ITransformation>(); FilterLogic = filterLogic; }