For example, the previous operation on :grade can be invoked as a transformation with:

    As you can see, @transform does not perform column selection, and the :grade_100 column is created as a new column and added to the right of our DataFrame.

    macros also support begin ... end statements. For example, suppose that you are creating two columns in a @transform macro:

      namegradegrade_100grade_5
      Sally1.010.00.5
      Bob5.050.02.5
      Alice8.585.04.25
      Hank4.040.02.0
      Bob9.595.04.75
      Sally9.595.04.75
      Hank6.060.03.0

      We can also use other columns in our transformations, which makes DataFramesMeta.jl more appealing than DataFrames.jl due to the easier syntax.

      First, let’s revisit the leftjoined from Chapter 4:

        namegrade_2020grade_2021
        Sally1.09.5
        Hank4.06.0
        Bob5.0missing
        Alice8.5missing

        Additionally, we’ll replace the missing values with 5 (Section , also note the ! in in-place variant @rtransform!):

          namegrade_2020grade_2021mean_grades
          Sally1.09.55.25
          Hank4.06.05.0
          Bob5.055.0
          Alice8.556.75

          This is how you would perform it in :

          As you can see, the case for easier syntax is not hard to argue for DataFramesMeta.jl.