You should have already run the “calibration” and “bathing” notebooks.

Load the tidyverse libraries:

library('tidyverse')

Load the height and weight dataset:

hw = read_csv('height_weight.csv')
Parsed with column specification:
cols(
  height = col_double(),
  weight = col_double()
)
hw

Calculate the BMI and add it to the table:

hw['BMI'] = hw$weight / hw$height ^ 2
hw

Sort by BMI:

sorted_hw = hw[with(hw, order(BMI)), ]
sorted_hw

Do default histogram of height:

ggplot(hw, aes(x=height)) + 
  geom_histogram()

Set the bin width:

ggplot(hw, aes(x=height)) + 
  geom_histogram(binwidth=0.1)

Set the bin edges directly:

ggplot(hw, aes(x=height)) + 
  geom_histogram(breaks=c(1.5, 1.6, 1.7, 1.8, 1.9))

A frequency table, with given bin widths:

table(cut(hw$height, breaks=c(1.5, 1.6, 1.7, 1.8, 1.9),
          include.lowest=TRUE))

[1.5,1.6] (1.6,1.7] (1.7,1.8] (1.8,1.9] 
        5         7         6         2 
View(hw)
LS0tCnRpdGxlOiAiSGVpZ2h0IFdlaWdodCIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKWW91IHNob3VsZCBoYXZlIGFscmVhZHkgcnVuIHRoZSAiY2FsaWJyYXRpb24iIGFuZCAiYmF0aGluZyIgbm90ZWJvb2tzLgoKTG9hZCB0aGUgYHRpZHl2ZXJzZWAgbGlicmFyaWVzOgoKYGBge3J9CmxpYnJhcnkoJ3RpZHl2ZXJzZScpCmBgYAoKTG9hZCB0aGUgaGVpZ2h0IGFuZCB3ZWlnaHQgZGF0YXNldDoKCmBgYHtyfQpodyA9IHJlYWRfY3N2KCdoZWlnaHRfd2VpZ2h0LmNzdicpCmh3CmBgYAoKQ2FsY3VsYXRlIHRoZSBCTUkgYW5kIGFkZCBpdCB0byB0aGUgdGFibGU6CgpgYGB7cn0KaHdbJ0JNSSddID0gaHckd2VpZ2h0IC8gaHckaGVpZ2h0IF4gMgpodwpgYGAKClNvcnQgYnkgQk1JOgoKYGBge3J9CnNvcnRlZF9odyA9IGh3W3dpdGgoaHcsIG9yZGVyKEJNSSkpLCBdCnNvcnRlZF9odwpgYGAKCkRvIGRlZmF1bHQgaGlzdG9ncmFtIG9mIGhlaWdodDoKCmBgYHtyfQpnZ3Bsb3QoaHcsIGFlcyh4PWhlaWdodCkpICsgCiAgZ2VvbV9oaXN0b2dyYW0oKQpgYGAKU2V0IHRoZSBiaW4gd2lkdGg6CgpgYGB7cn0KZ2dwbG90KGh3LCBhZXMoeD1oZWlnaHQpKSArIAogIGdlb21faGlzdG9ncmFtKGJpbndpZHRoPTAuMSkKYGBgClNldCB0aGUgYmluIGVkZ2VzIGRpcmVjdGx5OgoKYGBge3J9CmdncGxvdChodywgYWVzKHg9aGVpZ2h0KSkgKyAKICBnZW9tX2hpc3RvZ3JhbShicmVha3M9YygxLjUsIDEuNiwgMS43LCAxLjgsIDEuOSkpCmBgYApBIGZyZXF1ZW5jeSB0YWJsZSwgd2l0aCBnaXZlbiBiaW4gd2lkdGhzOgoKYGBge3J9CnRhYmxlKGN1dChodyRoZWlnaHQsIGJyZWFrcz1jKDEuNSwgMS42LCAxLjcsIDEuOCwgMS45KSwKICAgICAgICAgIGluY2x1ZGUubG93ZXN0PVRSVUUpKQpgYGAKCmBgYHtyfQpWaWV3KGh3KQpgYGAKCg==