@Override protected DoubleColumn.Builder builder() { return DoubleColumn.builder(ID); }
@Test public void of() { DoubleColumn column = DoubleColumn.of(ID, 42d); assertEquals(ID, column.getId()); assertEquals(1, column.getRowCount()); assertEquals(42d, column.getValueAt(0), DELTA); assertArrayEquals(new double[]{42}, column.valueStream().toArray(), DELTA); }
@Override public DoubleColumn build() { return new DoubleColumn(id, valueBuilder.build(), metaDataBuilder.build()); }
public double getValueAt(int rowIndex, DoubleColumnId columnId) { DoubleColumn column = getTypedColumn(columnId); return column.getValueAt(rowIndex); }
@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(); }
assertArrayEquals(new double[]{1.74, 1.20, 1.70}, heightColumn.valueStream().toArray(), 0.01);
@Test public void ofAllVarArgs() { DoubleColumn column = DoubleColumn.ofAll(ID, 1, 2, 9, 0); assertMultipleValues(column); }
private static void assertMetaDataParsedCorrectly(DataFrame df) { Map<String, String> dataFrameMetaData = df.getMetaData(); assertEquals(1, dataFrameMetaData.size()); assertEquals(Option.of("netzwerg"), dataFrameMetaData.get("author")); Map<String, String> columnMetaData = df.getColumn(df.getColumnId(2, ColumnType.DOUBLE)).getMetaData(); assertEquals(1, columnMetaData.size()); assertEquals(Option.of("m"), columnMetaData.get("unit")); }
public double getValueAt(int rowIndex, DoubleColumnId columnId) { DoubleColumn column = getTypedColumn(columnId); return column.getValueAt(rowIndex); }
DoubleColumn heightColumn = DoubleColumn.ofAll(HEIGHT, 1.74, 1.20, 1.70); BooleanColumn vegetarianColumn = BooleanColumn.ofAll(VEGETARIAN, true, false, false); TimestampColumn dateOfBirthColumn = TimestampColumn.ofAll(DATE_OF_BIRTH, AUG_26_1975, JAN_08_2006, OCT_26_1947); assertEquals(HEIGHT, df.getColumnId(2, ColumnType.DOUBLE)); assertEquals(heightColumn, df.getColumn(HEIGHT)); assertArrayEquals(new double[]{1.74, 1.20, 1.70}, heightColumn.valueStream().toArray(), 0.01);
@Test public void ofAllStream() { DoubleStream stream = DoubleStream.of(1, 2, 9, 0); DoubleColumn column = DoubleColumn.ofAll(ID, stream); assertMultipleValues(column); }
private static void assertMultipleValues(DoubleColumn column) { assertEquals(ID, column.getId()); assertEquals(4, column.getRowCount()); assertEquals(1, column.getValueAt(0), DELTA); assertEquals(0, column.getValueAt(column.getRowCount() - 1), DELTA); assertArrayEquals(new double[]{1, 2, 9, 0}, column.valueStream().toArray(), DELTA); }
public static DoubleColumn of(DoubleColumnId id, double value) { return builder(id).add(value).build(); }
@Override public DoubleColumn build() { return new DoubleColumn(id, valueBuilder.build(), metaDataBuilder.build()); }
public static DoubleColumn ofAll(DoubleColumnId id, double... values) { return builder(id).addAll(values).build(); }
public static DoubleColumn ofAll(DoubleColumnId id, double... values) { return builder(id).addAll(values).build(); }
public static DoubleColumn ofAll(DoubleColumnId id, DoubleStream values) { return builder(id).addAll(values).build(); }
public static DoubleColumn ofAll(DoubleColumnId id, DoubleStream values) { return builder(id).addAll(values).build(); }
public static DoubleColumn of(DoubleColumnId id, double value) { return builder(id).add(value).build(); }