Imports System Imports CenterSpace.NMath.Core Namespace CenterSpace.NMath.Examples.VisualBasic A .NET example in Visual Basic showing how to use the Apply and Transform methods on a DataFrame and its columns. Module ApplyTransformExample Sub Main() Dim Data As DataFrame = New DataFrame() Data.AddColumn(New DFStringColumn("first")) Data.AddColumn(New DFStringColumn("last")) Data.AddColumn(New DFDateTimeColumn("birthdate")) Data.AddColumn(New DFNumericColumn("test1")) Data.AddColumn(New DFNumericColumn("test2")) Data = InitializeData(Data) Console.WriteLine() Console.WriteLine() Console.WriteLine("Original data...") Console.WriteLine() Console.WriteLine(Data) Combine first name and last name columns into a new column and then add it to the data frame. Dim Concatenate As New Func(Of String, String, String)(AddressOf CombineNames) Dim FullNames As DFStringColumn = (CType(Data("first"), DFStringColumn).Apply("full names", Concatenate, CType(Data("last"), DFStringColumn))) Data.InsertColumn(0, FullNames) Remove first name, last name columns Data.RemoveColumn("first") Data.RemoveColumn("last") Console.WriteLine() Console.WriteLine("Concatenate first and last names...") Console.WriteLine() Console.WriteLine(Data) Scale all test2 scores up by 10 points CType(Data("test2"), DFNumericColumn).Transform(New Func(Of Double, Double)(AddressOf Scale)) Console.WriteLine() Console.WriteLine("Scale test2 up by 10%...") Console.WriteLine() Console.WriteLine(Data) Cap all grades at 95 CType(Data("test1"), DFNumericColumn).Transform(New Func(Of Double, Double)(AddressOf Cap)) CType(Data("test2"), DFNumericColumn).Transform(New Func(Of Double, Double)(AddressOf Cap)) Console.WriteLine() Console.WriteLine("Cap grades at 95%...") Console.WriteLine() Console.WriteLine(Data) Add a new column which is the weighted average of the two tests Dim WeightedFunction As New Func(Of Double, Double, Double)(AddressOf Weighted) Dim Test1 As DFNumericColumn = CType(Data("test1"), DFNumericColumn) Dim Test2 As DFNumericColumn = CType(Data("test2"), DFNumericColumn) Dim Final As DFNumericColumn = CType(Test1.Apply("final", WeightedFunction, Test2), DFNumericColumn) Data.AddColumn(Final) Console.WriteLine() Console.WriteLine("Final weighted average...") Console.WriteLine() Console.WriteLine(Data) Round all numeric values to the nearest whole number CType(Data("test1"), DFNumericColumn).Transform(New Func(Of Double, Integer, Double)(AddressOf Math.Round), 1) CType(Data("test1"), DFNumericColumn).NumericFormat = "F1" CType(Data("test2"), DFNumericColumn).Transform(New Func(Of Double, Integer, Double)(AddressOf Math.Round), 1) CType(Data("test2"), DFNumericColumn).NumericFormat = "F1" CType(Data("final"), DFNumericColumn).Transform(New Func(Of Double, Integer, Double)(AddressOf Math.Round), 1) CType(Data("final"), DFNumericColumn).NumericFormat = "F1" Console.WriteLine() Console.WriteLine("Round to one decimal place...") Console.WriteLine() Console.WriteLine(Data) Console.WriteLine() Console.WriteLine("Press Enter Key") Console.Read() End Sub Function InitializeData(ByRef Data As DataFrame) As DataFrame Data.AddRow(1, "Jack", "Cooper", "1/29/1968", 55.4, 63.3) Data.AddRow(2, "Henri", "Robert", "12/4/1978", 85.6, 90.2) Data.AddRow(3, "Sasha", "Klein", "5/7/1947", 65.4, 64.3) Data.AddRow(4, "Gail", "Blake", "8/4/1985", 75.1, 48.2) Data.AddRow(5, "Paul", "Norton", "9/21/1981", 55.4, 62.3) Data.AddRow(6, "Harry", "Liu", "10/12/1972", 85.6, 87.3) Data.AddRow(7, "Roberto", "Ortiz", "11/3/1978", 59.2, 93.3) Data.AddRow(8, "Marie", "Flint", "4/5/1972", 66.7, 38.2) Return Data End Function Function CombineNames(ByVal First As String, ByVal Last As String) As String Return First + " " + Last End Function Function Scale(ByVal Score As Double) As Double Return Score + 10.0 End Function Function Cap(ByVal Score As Double) As Double If Score > 95.0 Then Return 95.0 Else Return Score End If End Function Function Weighted(ByVal Test1 As Double, ByVal Test2 As Double) As Double Return (0.4 * Test1) + (0.6 * Test2) End Function End Module End Namespace← All NMath Code Examples