func Group(ds *rdb.Dataset, key string) map[string]*rdb.Dataset { values := ds.GetDatasetStringValues(key) valueSet := map[string]string{} for _, value := range values { _, exists := valueSet[value] if !exists { valueSet[value] = value } } grouped := map[string]*rdb.Dataset{} for value, _ := range valueSet { filter := func(str string) bool { return str == value } grouped[value] = ds.FilterDataset(filter, key).RenameDataset(ds.GetName() + " " + value) } return grouped }