Home > database >  Take last n columns with value
Take last n columns with value

Time:12-17

i have a basic R question: imagine the following code:

a <- c("A","B","C")
b <- c("A","B","C")
c <- c("A","X","C")
x <- c("A","B","C")
y <- c("","B","C")
z <- c("","","C")
frame <- data.frame(a,b,c,x,y,z)

now i want to get the content of the last 3 columns but only if they contain value. So the Output should look like this

new1 <- c("A","X","C")
new2 <- c("A","B","C")
new3 <- c("A","B","C")
frame2 <- data.frame(new1,new2,new3)

I am thankful for every help.

CodePudding user response:

You can do,

new_frame <- frame[colSums(frame == '') == 0]
new_frame[tail(seq_along(new_frame), 3)]
  b c x
1 A A A
2 B X B
3 C C C

CodePudding user response:

Using apply from base R

as.data.frame(t(apply(frame, 1, FUN = function(x) tail(x[nzchar(x)], 3))))
  •  Tags:  
  • r
  • Related