diff --git a/.gitignore b/.gitignore index 34f3cca..ee4351f 100644 --- a/.gitignore +++ b/.gitignore @@ -19,3 +19,5 @@ go.work # End of https://www.toptal.com/developers/gitignore/api/go .DS_Store + +.idea/ diff --git a/README.md b/README.md index a39d2d5..4f58363 100644 --- a/README.md +++ b/README.md @@ -168,7 +168,7 @@ if err != nil { ```go // Add a new record data := [6]string{"11", "2022-01-01", "123", "456", "Kevin", "Kevison"} -df = df.AddRecord(data[:]) +df.AddRecord(data[:]) // Update a value for _, row := range df.FrameRecords { diff --git a/main.go b/main.go index e9e29fd..385d131 100644 --- a/main.go +++ b/main.go @@ -370,7 +370,7 @@ func (frame DataFrame) KeepColumns(columns []string) DataFrame { for _, column := range columns { newData = append(newData, row.Val(column, frame.Headers)) } - df = df.AddRecord(newData) + df.AddRecord(newData) } return df @@ -421,7 +421,7 @@ func (frame *DataFrame) Rename(originalColumnName, newColumnName string) error { } // Add a new record to the DataFrame -func (frame DataFrame) AddRecord(newData []string) DataFrame { +func (frame *DataFrame) AddRecord(newData []string) { x := Record{Data: []string{}} for _, each := range newData { @@ -429,8 +429,6 @@ func (frame DataFrame) AddRecord(newData []string) DataFrame { } frame.FrameRecords = append(frame.FrameRecords, x) - - return frame } // Provides a slice of columns in order @@ -463,7 +461,7 @@ func (frame DataFrame) Copy() DataFrame { df := CreateNewDataFrame(headers) for i := 0; i < len(frame.FrameRecords); i++ { - df = df.AddRecord(frame.FrameRecords[i].Data) + df.AddRecord(frame.FrameRecords[i].Data) } return df } @@ -529,8 +527,8 @@ func (frame DataFrame) Filtered(fieldName string, value ...string) DataFrame { newFrame := CreateNewDataFrame(headers) for i := 0; i < len(frame.FrameRecords); i++ { - if slices.Contains(value, frame.FrameRecords[i].Data[frame.Headers[fieldName]]) { - newFrame = newFrame.AddRecord(frame.FrameRecords[i].Data) + if contains(value, frame.FrameRecords[i].Data[frame.Headers[fieldName]]) == true { + newFrame.AddRecord(frame.FrameRecords[i].Data) } } @@ -560,7 +558,7 @@ func (frame DataFrame) GreaterThanOrEqualTo(fieldName string, value float64) (Da } if val >= value { - newFrame = newFrame.AddRecord(frame.FrameRecords[i].Data) + newFrame.AddRecord(frame.FrameRecords[i].Data) } } return newFrame, nil @@ -589,7 +587,7 @@ func (frame DataFrame) LessThanOrEqualTo(fieldName string, value float64) (DataF } if val <= value { - newFrame = newFrame.AddRecord(frame.FrameRecords[i].Data) + newFrame.AddRecord(frame.FrameRecords[i].Data) } } return newFrame, nil @@ -610,8 +608,8 @@ func (frame DataFrame) Exclude(fieldName string, value ...string) DataFrame { newFrame := CreateNewDataFrame(headers) for i := 0; i < len(frame.FrameRecords); i++ { - if !slices.Contains(value, frame.FrameRecords[i].Data[frame.Headers[fieldName]]) { - newFrame = newFrame.AddRecord(frame.FrameRecords[i].Data) + if contains(value, frame.FrameRecords[i].Data[frame.Headers[fieldName]]) == false { + newFrame.AddRecord(frame.FrameRecords[i].Data) } } @@ -639,7 +637,7 @@ func (frame DataFrame) FilteredAfter(fieldName, desiredDate string) DataFrame { isAfter := recordDate.After(dateConverter(desiredDate)) if isAfter { - newFrame = newFrame.AddRecord(frame.FrameRecords[i].Data) + newFrame.AddRecord(frame.FrameRecords[i].Data) } } return newFrame @@ -666,7 +664,7 @@ func (frame DataFrame) FilteredBefore(fieldName, desiredDate string) DataFrame { isBefore := recordDate.Before(dateConverter(desiredDate)) if isBefore { - newFrame = newFrame.AddRecord(frame.FrameRecords[i].Data) + newFrame.AddRecord(frame.FrameRecords[i].Data) } } @@ -695,7 +693,7 @@ func (frame DataFrame) FilteredBetween(fieldName, startDate, endDate string) Dat isBefore := recordDate.Before(dateConverter(endDate)) if isAfter && isBefore { - newFrame = newFrame.AddRecord(frame.FrameRecords[i].Data) + newFrame.AddRecord(frame.FrameRecords[i].Data) } } @@ -947,7 +945,7 @@ func (frame DataFrame) InnerMerge(dfRight *DataFrame, primaryKey string) DataFra } } - dfNew = dfNew.AddRecord(data) + dfNew.AddRecord(data) } } return dfNew diff --git a/main_test.go b/main_test.go index 11f1e7a..5176e8a 100644 --- a/main_test.go +++ b/main_test.go @@ -85,7 +85,7 @@ func TestDynamicMetrics(t *testing.T) { // Add data to DataFrame data := []string{fmt.Sprintf("%f", v)} - df = df.AddRecord(data) + df.AddRecord(data) if v > recordedMax { recordedMax = v @@ -202,7 +202,7 @@ func TestStandardDeviationMethodPass(t *testing.T) { for i := 0; i < 1000; i++ { val := strconv.Itoa(i) - df = df.AddRecord([]string{"ID-" + val, val}) + df.AddRecord([]string{"ID-" + val, val}) } stdev, err := df.StandardDeviation("Value") @@ -226,10 +226,10 @@ func TestStandardDeviationMethodFail(t *testing.T) { for i := 0; i < 1000; i++ { // Insert row with value that cannot be converted to float64. if i == 500 { - df = df.AddRecord([]string{"ID-" + "500", "5x0x0x"}) + df.AddRecord([]string{"ID-" + "500", "5x0x0x"}) } val := strconv.Itoa(i) - df = df.AddRecord([]string{"ID-" + val, val}) + df.AddRecord([]string{"ID-" + val, val}) } _, err := df.StandardDeviation("Value") @@ -479,7 +479,7 @@ func TestAddRecord(t *testing.T) { path := "./" df := CreateDataFrame(path, "data/tests/TestData.csv") newData := [6]string{"11", "2022-06-23", "101", "500", "Ben", "Benison"} - df = df.AddRecord(newData[:]) + df.AddRecord(newData[:]) if df.CountRecords() != 11 { t.Error("Add Record: Count does not match.") @@ -668,7 +668,7 @@ func TestMergeFramesAllColumns(t *testing.T) { // Prep left frame df := CreateDataFrame(path, "data/tests/TestData.csv") newData := [6]string{"11", "2022-06-27", "5467", "9586", "Cassandra", "SchmaSandra"} - df = df.AddRecord(newData[:]) + df.AddRecord(newData[:]) // Prep right frame dfRight := CreateDataFrame(path, "data/tests/TestMergeData.csv") @@ -715,7 +715,7 @@ func TestMergeFramesSpecifiedColumns(t *testing.T) { // Prep left frame df := CreateDataFrame(path, "data/tests/TestData.csv") newData := [6]string{"11", "2022-06-27", "5467", "9586", "Cassandra", "SchmaSandra"} - df = df.AddRecord(newData[:]) + df.AddRecord(newData[:]) // Prep right frame dfRight := CreateDataFrame(path, "data/tests/TestMergeData.csv") @@ -982,9 +982,9 @@ func TestAssortment(t *testing.T) { // Add Records newData := [6]string{"21", "2022-01-01", "200", "585", "Tommy", "Thompson"} - df = df.AddRecord(newData[:]) + df.AddRecord(newData[:]) newDataTwo := [6]string{"22", "2022-01-31", "687", "948", "Sarah", "McSarahson"} - df = df.AddRecord(newDataTwo[:]) + df.AddRecord(newDataTwo[:]) if df.CountRecords() != 22 { t.Error("Assortment: concat count incorrect.") @@ -1112,7 +1112,7 @@ func TestAutoCount(t *testing.T) { fmt.Sprintf("%f", val), fmt.Sprintf("%f", sq), } - df = df.AddRecord(data) + df.AddRecord(data) } if df.CountRecords() != 1_000 { @@ -1132,7 +1132,7 @@ func TestAutoSum(t *testing.T) { fmt.Sprintf("%f", val), fmt.Sprintf("%f", sq), } - df = df.AddRecord(data) + df.AddRecord(data) } if df.Sum("value") != 333_833_500.0 {