Given a dataframe
that looks like:
V1 V2 V3
5 8 12
4 9 5
7 3 9
...
How to add columns to the dataframe
for min and median of these 3 columns, calculated for each row?
The resulting DF should look like:
V1 V2 V3 Min Median
5 8 12 5 8
4 9 5 4 5
7 3 9 3 7
...
I tried using dplyr::mutate
:
mutate(df, Min = min(V1,V2,V3))
but that takes the min of the entire dataframe and puts that value in every row. How can I get the min and median of just each row?
For Mean, I can use rowMeans
in mutate
, but there are no similar functions for min and median.
Also tried,
lapply(df[1:3], median)
but it just produces the median of each column
dd <- read.table(header = TRUE, text = 'V1 V2 V3
5 8 12
4 9 5
7 3 9')
You can do it with
dplyr
, but you need to group by a unique ID variable so evaluate separately for each row. If, say,V1
is definitely unique, this is pretty easy:If you don't have a unique ID, you can make (and delete, if you like) one pretty easily:
Either way, you get
Hope this helped.
You can use
apply
like this (the 1 means calculate by row, 2 would calculate by column):With
dplyr
, using the functionrowwise
Output: