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')
apply(df,1,median)
? – AndrelrmsrowMeans
and find that like-named functions have been developed,rowMins
androwMedians
– Frankdf[c('min','median')] <- lapply(list(min, median), function(x) apply(df, 1, x))
– rawrcbind(df,t(apply(df,1,quantile,c(0,0.5))))
. – A. Webb