geom_col() doesn't perform any count or aggregation in your data, that is why you have to provide a y aesthetic with absolute values, your code is essentially stacking a little column (and text label) for each row in the dataset,if you want to perform summaries you have to operate manually in the dataset, see this example