name - slice data frame r
Elimine las Ășltimas N filas en el marco de datos con el nĂșmero arbitrario de filas (2)
Tengo un marco de datos y quiero eliminar las últimas N filas de él. Si quiero eliminar 5 filas, actualmente uso el siguiente comando, que en mi opinión es bastante intrincado:
df<- df[-seq(nrow(df),nrow(df)-4),]
¿Cómo lograría la tarea? ¿Hay alguna función conveniente que pueda usar en R?
En Unix, usaría:
tac file | sed ''1,5d'' | tac
Este toma una línea más, pero es mucho más legible:
n<-dim(df)[1]
df<-df[1:(n-5),]
Por supuesto, puede hacerlo en una línea insertando el comando dim
directamente en la instrucción de reasignación. Supongo que esto es parte de una secuencia de comandos reproducible, y puede volver sobre sus pasos ... De lo contrario, recomiendo encarecidamente en esos casos para guardar en una variable diferente (por ejemplo, df2
) y luego eliminar la copia redundante solo después de que está seguro de que obtuve lo que querías
head
con un índice negativo es conveniente para esto ...
df <- data.frame( a = 1:10 )
head(df,-5)
# a
#1 1
#2 2
#3 3
#4 4
#5 5
ps su ejemplo seq()
puede escribirse un poco menos (?) torpemente usando los argumentos nombrados by
y length.out
(acortado a len
) como este -seq(nrow(df),by=-1,len=5)
.