Use sort function and subset the second lowest
df %>% rowwise() %>% mutate(Min = sort(c(A, B, C, D, E), FALSE)[1],
Min2 = sort(c(A, B, C, D, E), FALSE)[2])
# A tibble: 10 x 7
# Rowwise:
A B C D E Min Min2
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 0.252 -1.69 -0.612 -1.54 1.50 -1.69 -1.54
2 0.642 1.25 -0.372 -1.32 -0.289 -1.32 -0.372
3 -0.347 -1.77 -0.515 -0.676 1.92 -1.77 -0.676
4 -0.515 0.223 -0.342 -0.367 0.519 -0.515 -0.367
5 0.398 -0.561 0.684 -0.514 0.477 -0.561 -0.514
6 0.954 -0.508 0.798 -0.959 0.303 -0.959 -0.508
7 0.260 -0.939 -0.800 -0.122 0.821 -0.939 -0.800
8 -2.05 1.64 0.230 0.666 0.393 -2.05 0.230
9 0.288 -0.653 1.69 1.24 -1.44 -1.44 -0.653
10 0.362 0.839 -0.768 1.18 -0.869 -0.869 -0.768
If you want to find the average of four lowest values:
df %>% rowwise() %>% mutate(Average_Min = mean(sort(c(A, B, C, D, E), FALSE)[1:4]))
# A tibble: 10 x 6
# Rowwise:
A B C D E Average_Min
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 -2.99 0.279 0.999 -0.131 0.128 -0.678
2 -0.0505 -0.0756 -1.09 -0.417 -0.225 -0.452
3 1.30 0.123 0.854 0.652 0.670 0.575
4 -1.35 -1.03 -0.627 -1.65 0.538 -1.16
5 -0.950 0.0897 0.421 -0.677 -0.0553 -0.398
6 1.69 1.32 -0.396 -1.31 0.502 0.0307
7 0.244 -0.308 -0.390 -0.405 -0.640 -0.436
8 -1.39 1.48 0.384 1.36 1.80 0.458
9 0.887 -0.470 1.66 -0.661 0.999 0.189
10 0.0282 -0.866 -1.13 -0.915 0.878 -0.720