min for each row with dataframe in R
You can use apply
to go through each row
apply(df, 1, FUN=min)
Where 1 means to apply FUN to each row of df, 2 would mean to apply FUN to columns.
We could use pmin
, which finds the parallel minima of sets of values. Since our df
is technically a list, we will need to run it via do.call
.
df$min <- do.call(pmin, df)
which gives
df
# x y min
# 1 1 1 1
# 2 2 5 2
# 3 7 4 4
Data:
df <- data.frame(x = c(1, 2, 7), y = c(1, 5, 4))
Furthermore, if na.rm = TRUE
is needed, you can do
df$min <- do.call(pmin, c(df, na.rm = TRUE))
Just want to add on how you can also do this with dplyr.
library(dplyr)
x<-c(1,2,7)
y<-c(1,5,4)
df <- data.frame(x,y)
df %>% rowwise() %>% mutate(minIget = min(x, y))
# A tibble: 3 x 3
x y minIget
<dbl> <dbl> <dbl>
1 1. 1. 1.
2 2. 5. 2.
3 7. 4. 4.