In chapter 12, you learned how to perform basic transformations of data frames by using operation specification syntax with the combine function. In this chapter, you will learn more advanced scenarios for using this syntax, along with more functions that accept it: select, select!, transform, transform!, subset, and subset!. With these functions, you can conveniently perform any operation you need on columns. At the same time, these functions are optimized for speed, and optionally can use multiple threads to perform computations. As in chapter 12, I also show you how to specify these transformations by using the DataFramesMeta.jl domain-specific language.
In this chapter, you will also learn to combine multiple tables by using join operations. DataFrames.jl has an efficient implementation for all standard joins: inner joins, left and right joins, outer joins, semi and anti joins, and cross joins. Similarly, I will show you how to reshape data frames with the stack and unstack functions.