Index: /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/StatisticsLogic.cs
===================================================================
--- /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/StatisticsLogic.cs	(revision 10536)
+++ /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/StatisticsLogic.cs	(revision 10537)
@@ -97,5 +97,4 @@
 
       return preprocessingData.GetValues<T>(columnIndex)
-
                               .GroupBy(x => x)
                               .OrderByDescending(g => g.Count())
Index: /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/TransformationLogic.cs
===================================================================
--- /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/TransformationLogic.cs	(revision 10536)
+++ /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/TransformationLogic.cs	(revision 10537)
@@ -1,5 +1,50 @@
 ﻿
+using System;
 namespace HeuristicLab.DataPreprocessing {
+
   public class TransformationLogic : ITransformationLogic {
+
+    private readonly IPreprocessingData preprocessingData;
+    private readonly ISearchLogic searchLogic;
+    private readonly IStatisticsLogic statisticsLogic;
+
+    public TransformationLogic(IPreprocessingData thePreprocessingData, ISearchLogic theSearchLogic, IStatisticsLogic theStatisticsLogic) {
+      preprocessingData = thePreprocessingData;
+      searchLogic = theSearchLogic;
+      statisticsLogic = theStatisticsLogic;
+    }
+
+    public void deleteRowsWithMissingValuesGreater(double percent) {
+      for (int i = 0; i < preprocessingData.Rows; ++i) {
+        int missingCount = statisticsLogic.GetRowMissingValueCount(i);
+        if (100f / preprocessingData.Columns * missingCount >= percent) {
+          preprocessingData.DeleteRow(i);
+          --i;
+        }
+      }
+    }
+
+    public void deleteColumnsWithMissingValuesGreater(float percent) {
+      for (int i = 0; i < preprocessingData.Columns; ++i) {
+        int missingCount = statisticsLogic.GetMissingValueCount(i);
+        if (100f / preprocessingData.Columns * missingCount >= percent) {
+          preprocessingData.DeleteColumn(i);
+          --i;
+        }
+      }
+    }
+
+    public void deleteColumnsWithVarianceSmaller(double variance) {
+      for (int i = 0; i < preprocessingData.Columns; ++i) {
+        if (preprocessingData.IsType<double>(i) || preprocessingData.IsType<DateTime>(i)) {
+          double columnVariance = statisticsLogic.GetVariance(i);
+          if (columnVariance < variance) {
+            preprocessingData.DeleteColumn(i);
+            --i;
+          }
+        }
+      }
+    }
+
   }
 }
Index: /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Interfaces/ITransformationLogic.cs
===================================================================
--- /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Interfaces/ITransformationLogic.cs	(revision 10536)
+++ /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Interfaces/ITransformationLogic.cs	(revision 10537)
@@ -1,11 +1,8 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-
-namespace HeuristicLab.DataPreprocessing
-{
-  public interface ITransformationLogic
-  {
+﻿
+namespace HeuristicLab.DataPreprocessing {
+  public interface ITransformationLogic {
+    void deleteRowsWithMissingValuesGreater(double percent);
+    void deleteColumnsWithMissingValuesGreater(float percent);
+    void deleteColumnsWithVarianceSmaller(double variance);
   }
 }
Index: /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Views/DataPreprocessingView.cs
===================================================================
--- /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Views/DataPreprocessingView.cs	(revision 10536)
+++ /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Views/DataPreprocessingView.cs	(revision 10537)
@@ -46,8 +46,9 @@
       ISearchLogic searchLogic = new SearchLogic(data);
       var dataGridLogic = new DataGridLogic(data);
-      dataGridContent = new DataGridContent(dataGridLogic, new ManipulationLogic(data, searchLogic, new StatisticsLogic(data, searchLogic)));
-      statisticsContent = new StatisticsContent(new StatisticsLogic(data, searchLogic));
+      StatisticsLogic statisticsLogic = new StatisticsLogic(data, searchLogic);
+      dataGridContent = new DataGridContent(dataGridLogic, new ManipulationLogic(data, searchLogic, statisticsLogic));
+      statisticsContent = new StatisticsContent(statisticsLogic);
       filterContent = new FilterContent(new FilterLogic());
-      tranformationContent = new TransformationContent(new TransformationLogic());
+      tranformationContent = new TransformationContent(new TransformationLogic(data, searchLogic, statisticsLogic));
       lineChartContent = new LineChartContent(new LineChartLogic(data));
       histogramContent = new HistogramContent(new HistogramLogic());
