← All NMath Code Examples
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