Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,7 @@ if err != nil {
```go
// Add a new record
data := [6]string{"11", "2022-01-01", "123", "456", "Kevin", "Kevison"}
df.AddRecord(data[:])
df = df.AddRecord(data[:])

// Update a value
for _, row := range df.FrameRecords {
Expand Down
47 changes: 30 additions & 17 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -370,7 +370,7 @@ func (frame DataFrame) KeepColumns(columns []string) DataFrame {
for _, column := range columns {
newData = append(newData, row.Val(column, frame.Headers))
}
df.AddRecord(newData)
df = df.AddRecord(newData)
}

return df
Expand Down Expand Up @@ -421,7 +421,20 @@ func (frame *DataFrame) Rename(originalColumnName, newColumnName string) error {
}

// Add a new record to the DataFrame
func (frame *DataFrame) AddRecord(newData []string) {
func (frame DataFrame) AddRecord(newData []string) DataFrame {
x := Record{Data: []string{}}

for _, each := range newData {
x.Data = append(x.Data, each)
}

frame.FrameRecords = append(frame.FrameRecords, x)

return frame
}

// Add a new record to the DataFrame
func (frame *DataFrame) AddRecordByReference(newData []string) {
x := Record{Data: []string{}}

for _, each := range newData {
Expand Down Expand Up @@ -461,7 +474,7 @@ func (frame DataFrame) Copy() DataFrame {
df := CreateNewDataFrame(headers)

for i := 0; i < len(frame.FrameRecords); i++ {
df.AddRecord(frame.FrameRecords[i].Data)
df = df.AddRecord(frame.FrameRecords[i].Data)
}
return df
}
Expand All @@ -484,27 +497,27 @@ func (frame DataFrame) Where(fieldName, operator, value string) DataFrame {
switch operator {
case "==":
if val == value {
newFrame.AddRecord(frame.FrameRecords[i].Data)
newFrame = newFrame.AddRecord(frame.FrameRecords[i].Data)
}
case "!=":
if val != value {
newFrame.AddRecord(frame.FrameRecords[i].Data)
newFrame = newFrame.AddRecord(frame.FrameRecords[i].Data)
}
case ">":
if val > value {
newFrame.AddRecord(frame.FrameRecords[i].Data)
newFrame = newFrame.AddRecord(frame.FrameRecords[i].Data)
}
case "<":
if val < value {
newFrame.AddRecord(frame.FrameRecords[i].Data)
newFrame = newFrame.AddRecord(frame.FrameRecords[i].Data)
}
case ">=":
if val >= value {
newFrame.AddRecord(frame.FrameRecords[i].Data)
newFrame = newFrame.AddRecord(frame.FrameRecords[i].Data)
}
case "<=":
if val <= value {
newFrame.AddRecord(frame.FrameRecords[i].Data)
newFrame = newFrame.AddRecord(frame.FrameRecords[i].Data)
}
}
}
Expand All @@ -528,7 +541,7 @@ func (frame DataFrame) Filtered(fieldName string, value ...string) DataFrame {

for i := 0; i < len(frame.FrameRecords); i++ {
if slices.Contains(value, frame.FrameRecords[i].Data[frame.Headers[fieldName]]) {
newFrame.AddRecord(frame.FrameRecords[i].Data)
newFrame = newFrame.AddRecord(frame.FrameRecords[i].Data)
}
}

Expand Down Expand Up @@ -558,7 +571,7 @@ func (frame DataFrame) GreaterThanOrEqualTo(fieldName string, value float64) (Da
}

if val >= value {
newFrame.AddRecord(frame.FrameRecords[i].Data)
newFrame = newFrame.AddRecord(frame.FrameRecords[i].Data)
}
}
return newFrame, nil
Expand Down Expand Up @@ -587,7 +600,7 @@ func (frame DataFrame) LessThanOrEqualTo(fieldName string, value float64) (DataF
}

if val <= value {
newFrame.AddRecord(frame.FrameRecords[i].Data)
newFrame = newFrame.AddRecord(frame.FrameRecords[i].Data)
}
}
return newFrame, nil
Expand All @@ -609,7 +622,7 @@ func (frame DataFrame) Exclude(fieldName string, value ...string) DataFrame {

for i := 0; i < len(frame.FrameRecords); i++ {
if !slices.Contains(value, frame.FrameRecords[i].Data[frame.Headers[fieldName]]) {
newFrame.AddRecord(frame.FrameRecords[i].Data)
newFrame = newFrame.AddRecord(frame.FrameRecords[i].Data)
}
}

Expand Down Expand Up @@ -637,7 +650,7 @@ func (frame DataFrame) FilteredAfter(fieldName, desiredDate string) DataFrame {
isAfter := recordDate.After(dateConverter(desiredDate))

if isAfter {
newFrame.AddRecord(frame.FrameRecords[i].Data)
newFrame = newFrame.AddRecord(frame.FrameRecords[i].Data)
}
}
return newFrame
Expand All @@ -664,7 +677,7 @@ func (frame DataFrame) FilteredBefore(fieldName, desiredDate string) DataFrame {
isBefore := recordDate.Before(dateConverter(desiredDate))

if isBefore {
newFrame.AddRecord(frame.FrameRecords[i].Data)
newFrame = newFrame.AddRecord(frame.FrameRecords[i].Data)
}
}

Expand Down Expand Up @@ -693,7 +706,7 @@ func (frame DataFrame) FilteredBetween(fieldName, startDate, endDate string) Dat
isBefore := recordDate.Before(dateConverter(endDate))

if isAfter && isBefore {
newFrame.AddRecord(frame.FrameRecords[i].Data)
newFrame = newFrame.AddRecord(frame.FrameRecords[i].Data)
}
}

Expand Down Expand Up @@ -945,7 +958,7 @@ func (frame DataFrame) InnerMerge(dfRight *DataFrame, primaryKey string) DataFra
}
}

dfNew.AddRecord(data)
dfNew = dfNew.AddRecord(data)
}
}
return dfNew
Expand Down
22 changes: 11 additions & 11 deletions main_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ func TestDynamicMetrics(t *testing.T) {

// Add data to DataFrame
data := []string{fmt.Sprintf("%f", v)}
df.AddRecord(data)
df = df.AddRecord(data)

if v > recordedMax {
recordedMax = v
Expand Down Expand Up @@ -202,7 +202,7 @@ func TestStandardDeviationMethodPass(t *testing.T) {

for i := 0; i < 1000; i++ {
val := strconv.Itoa(i)
df.AddRecord([]string{"ID-" + val, val})
df = df.AddRecord([]string{"ID-" + val, val})
}

stdev, err := df.StandardDeviation("Value")
Expand All @@ -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.AddRecord([]string{"ID-" + "500", "5x0x0x"})
df = df.AddRecord([]string{"ID-" + "500", "5x0x0x"})
}
val := strconv.Itoa(i)
df.AddRecord([]string{"ID-" + val, val})
df = df.AddRecord([]string{"ID-" + val, val})
}

_, err := df.StandardDeviation("Value")
Expand Down Expand Up @@ -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.AddRecord(newData[:])
df = df.AddRecord(newData[:])

if df.CountRecords() != 11 {
t.Error("Add Record: Count does not match.")
Expand Down Expand Up @@ -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.AddRecord(newData[:])
df = df.AddRecord(newData[:])

// Prep right frame
dfRight := CreateDataFrame(path, "data/tests/TestMergeData.csv")
Expand Down Expand Up @@ -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.AddRecord(newData[:])
df = df.AddRecord(newData[:])

// Prep right frame
dfRight := CreateDataFrame(path, "data/tests/TestMergeData.csv")
Expand Down Expand Up @@ -982,9 +982,9 @@ func TestAssortment(t *testing.T) {

// Add Records
newData := [6]string{"21", "2022-01-01", "200", "585", "Tommy", "Thompson"}
df.AddRecord(newData[:])
df = df.AddRecord(newData[:])
newDataTwo := [6]string{"22", "2022-01-31", "687", "948", "Sarah", "McSarahson"}
df.AddRecord(newDataTwo[:])
df = df.AddRecord(newDataTwo[:])

if df.CountRecords() != 22 {
t.Error("Assortment: concat count incorrect.")
Expand Down Expand Up @@ -1112,7 +1112,7 @@ func TestAutoCount(t *testing.T) {
fmt.Sprintf("%f", val),
fmt.Sprintf("%f", sq),
}
df.AddRecord(data)
df = df.AddRecord(data)
}

if df.CountRecords() != 1_000 {
Expand All @@ -1132,7 +1132,7 @@ func TestAutoSum(t *testing.T) {
fmt.Sprintf("%f", val),
fmt.Sprintf("%f", sq),
}
df.AddRecord(data)
df = df.AddRecord(data)
}

if df.Sum("value") != 333_833_500.0 {
Expand Down