Saltar al contenido

Seleccione las últimas n columnas del marco de datos en R

Bienvenido a nuestro sitio, en este lugar vas a hallar la resolución que estabas buscando.

Solución:

El problema descrito no coincide con el título, y las respuestas existentes abordan la parte de columnas móviles, realmente no explica cómo seleccionar las últimas N columnas.

Si solo desea seleccionar las últimas n columnas en una matriz / marco de datos sin conocer los nombres de las columnas:

mydata2[,ncol(mydata2)]

y si quieres las últimas n columnas, prueba

mydata[,(ncol(mydata2)-n-1):ncol(mydata2)]

Un poco engorroso, pero funciona. Podría escribir la función de contenedor si planea usarla regularmente.

Podrías usar algo como esto:

move_to_start <- function(x, to_move) 
  x[, c(to_move, setdiff(colnames(x), to_move))]
 

move_to_start(mydata2, c('A', 'B'))

#   A B num1 num2
# 1 A B    1   36
# 2 A B    2   37
# 3 A B    3   38
# 4 A B    4   39
# 5 A B    5   40

Alternativamente, si desea mover el último n columnas al principio:

move_to_start <- function(x, n) 
  x[, c(tail(seq_len(ncol(x)), n), seq_len(ncol(x) - n))]
 

move_to_start(mydata2, 2)

#   A B num1 num2
# 1 A B    1   36
# 2 A B    2   37
# 3 A B    3   38
# 4 A B    4   39
# 5 A B    5   40

Puede hacer algo similar usando el SOfun paquete, disponible en GitHub.

library(SOfun)

foo <- moveMe(colnames(mydata2), "A, B before num1")

mydata2[, foo]

#  A B num1 num2
#1 A B    1   36
#2 A B    2   37
#3 A B    3   38
#4 A B    4   39
#5 A B    5   40

Puede mover nombres de columna como este ejemplo desde la Ayuda de R.

x <- names(mtcars)

x
#[1] "mpg"  "cyl"  "disp" "hp"   "drat" "wt"   "qsec" "vs"   "am"   "gear" "carb"

moveMe(x, "hp first; cyl after drat; vs, am, gear before mpg; wt last")
#[1] "hp"   "vs"   "am"   "gear" "mpg"  "disp" "drat" "cyl"  "qsec" "carb" "wt" 

Te mostramos comentarios y valoraciones

Puedes avalar nuestro estudio exponiendo un comentario o dejando una valoración te damos las gracias.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *