r - How to find min value of each col in df and delete previous values? -


assuming have following data frame:

x1 <- c(12:4, 5:8, na, na) x2 <- c(15:8, 9:15) x3 <- c(14:9, 10:13, na, na, na, na, na)  df <- data.frame(x1, x2, x3) 

how can search minimum value in each column, delete values before , fill columns nas preserve equal length? nas should added end of cols, lowest values in row nr. 1. real dfs have varying numbers of cols , rows.

the desired result is:

  x1  x2  x3 1  4   8   9  2  5   9  10 .  . 8 na  15  na 

i'm assuming "df" actually:

df <- data.frame(x1, x2, x3) 

in case can try like:

data.frame(lapply(df, function(y) {   y[1:which.min(y)] <- na   y })) #    x1 x2 x3 # 1  na na na # 2  na na na # 3  na na na # 4  na na na # 5  na na na # 6  na na na # 7  na na 10 # 8  na na 11 # 9  na  9 12 # 10  5 10 13 # 11  6 11 na # 12  7 12 na # 13  8 13 na # 14 na 14 na # 15 na 15 na 

after reading comment , edit, perhaps looking instead:

data.frame(lapply(df, function(y) {   x1 <- rep(na, nrow(df))   x2 <- which.min(y):length(y)   x1[seq_along(x2)] <- y[x2]   x1 })) #    x1 x2 x3 # 1   4  8  9 # 2   5  9 10 # 3   6 10 11 # 4   7 11 12 # 5   8 12 13 # 6  na 13 na # 7  na 14 na # 8  na 15 na # 9  na na na # 10 na na na # 11 na na na # 12 na na na # 13 na na na # 14 na na na # 15 na na na 

Comments

Popular posts from this blog

c# - Send Image in Json : 400 Bad request -

jquery - Fancybox - apply a function to several elements -

An easy way to program an Android keyboard layout app -