Search code examples
rdataframeminimum

Get the min of two columns


I want to get the minimum of two columns and create a column in the same data.frame. How can I do that?

For example:

ID    Parm1   Parm2
 1      1       2
 2      0       1
 3      2       1
 4      1       0
 5      2       0

Desired output :

ID    Parm1    Parm2     Min
 1      1        2        1
 2      0        1        0
 3      2        1        1
 4      1        0        0
 5      2        0        0

Solution

  • You want the parallel minimum implemented in function pmin(). For example using your data:

    dat <- read.table(text = "ID    Parm1   Parm2
     1      1       2
     2      0       1
     3      2       1
     4      1       0
     5      2       0", header = TRUE)
    

    you can use transform() to add the min column as the output of pmin(Parm1, Parm2) and access the elements of dat without indexing:

    dat <- transform(dat, min = pmin(Parm1, Parm2))
    

    This gives:

    > dat
      ID Parm1 Parm2 min
    1  1     1     2   1
    2  2     0     1   0
    3  3     2     1   1
    4  4     1     0   0
    5  5     2     0   0