@Override protected CategoryColumn.Builder builder() { return CategoryColumn.builder(ID); }
/** * Creates a stream of individual row values (i.e. "explodes" categories). */ public Stream<String> valueStream() { return Stream.range(0, getRowCount()).map(this::getValueAt); }
public String getValueAt(int rowIndex, CategoryColumnId columnId) { CategoryColumn column = getTypedColumn(columnId); return column.getValueAt(rowIndex); }
@Test public void valueTypeSpecificBuilding() { CategoryColumn column = builder().add("foo").add("bar").addAll("foo", "baz", "bar").add("foo").build(); assertEquals(ID, column.getId()); assertEquals(6, column.getRowCount()); assertEquals(HashSet.of("foo", "bar", "baz"), column.getCategories()); assertEquals("foo", column.getValueAt(0)); assertEquals("bar", column.getValueAt(1)); }
@Test public void createValues() { CategoryColumnId id = CategoryColumnId.of("test"); Array<String> values = Array.ofAll(this.wordGenerator.randomWords(100)); CategoryColumn column = CategoryColumn.builder(id).addAll(values).build(); assertEquals(93, column.getCategories().length()); assertEquals(values, column.valueStream().toArray()); }
@Test public void demo() { // Type-safe column identifiers final StringColumnId NAME = StringColumnId.of("Name"); final CategoryColumnId COLOR = CategoryColumnId.of("Color"); final DoubleColumnId SERVING_SIZE = DoubleColumnId.of("Serving Size (g)"); // Convenient column creation StringColumn nameColumn = StringColumn.ofAll(NAME, "Banana", "Blueberry", "Lemon", "Apple"); CategoryColumn colorColumn = CategoryColumn.ofAll(COLOR, "Yellow", "Blue", "Yellow", "Green"); DoubleColumn servingSizeColumn = DoubleColumn.ofAll(SERVING_SIZE, 118, 148, 83, 182); // Grouping columns into a data frame DataFrame dataFrame = DataFrame.ofAll(nameColumn, colorColumn, servingSizeColumn); // Typed random access to individual values (based on rowIndex / columnId) String lemon = dataFrame.getValueAt(2, NAME); double appleServingSize = dataFrame.getValueAt(3, SERVING_SIZE); // Typed stream-based access to all values DoubleStream servingSizes = servingSizeColumn.valueStream(); double maxServingSize = servingSizes.summaryStatistics().getMax(); // Smart column implementations Set<String> colors = colorColumn.getCategories(); }
public CategoryColumn build() { Array<String> categories = Array.ofAll(indexByCategory.keySet()); return new CategoryColumn(id, categories, Array.ofAll(indexPerRow), metaDataBuilder.build()); }
assertEquals(HashSet.of("Female", "Male"), genderColumn.getCategories());
BooleanColumn vegetarianColumn = BooleanColumn.ofAll(VEGETARIAN, true, false, false); TimestampColumn dateOfBirthColumn = TimestampColumn.ofAll(DATE_OF_BIRTH, AUG_26_1975, JAN_08_2006, OCT_26_1947); CategoryColumn genderColumn = CategoryColumn.ofAll(GENDER, "Female", "Male", "Female"); assertEquals(GENDER, df.getColumnId(5, ColumnType.CATEGORY)); assertEquals(genderColumn, df.getColumn(GENDER)); assertEquals(HashSet.of("Female", "Male"), genderColumn.getCategories());
public CategoryColumn build() { Array<String> categories = Array.ofAll(indexByCategory.keySet()); return new CategoryColumn(id, categories, Array.ofAll(indexPerRow), metaDataBuilder.build()); }
public static CategoryColumn ofAll(CategoryColumnId id, Iterable<String> values) { return builder(id).addAll(values).build(); }
/** * Creates a stream of individual row values (i.e. "explodes" categories). */ public Stream<String> valueStream() { return Stream.range(0, getRowCount()).map(this::getValueAt); }
public String getValueAt(int rowIndex, CategoryColumnId columnId) { CategoryColumn column = getTypedColumn(columnId); return column.getValueAt(rowIndex); }
public static CategoryColumn ofAll(CategoryColumnId id, Iterable<String> values) { return builder(id).addAll(values).build(); }
public static CategoryColumn ofAll(CategoryColumnId id, String... values) { return builder(id).addAll(values).build(); }
public static CategoryColumn of(CategoryColumnId id, String value) { return builder(id).add(value).build(); }
public static CategoryColumn of(CategoryColumnId id, String value) { return builder(id).add(value).build(); }
public static CategoryColumn ofAll(CategoryColumnId id, String... values) { return builder(id).addAll(values).build(); }