データフレームがあり、最後のN行を削除したい。 5行を削除する場合は、現在次のコマンドを使用しますが、これはかなり複雑です。
df<- df[-seq(nrow(df),nrow(df)-4),]
Rで使用できる便利な機能はありますか?
UNIXでは、次を使用します。
tac file | sed '1,5d' | tac
head
インデックスが負の場合、これに便利です...
_df <- data.frame( a = 1:10 )
head(df,-5)
# a
#1 1
#2 2
#3 3
#4 4
#5 5
_
追伸このseq()
のように、名前付き引数by
および_length.out
_(len
に短縮)を使用すると、-seq(nrow(df),by=-1,len=5)
の例は少し不便に書かれます。
これはもう1行必要ですが、はるかに読みやすくなっています。
n<-dim(df)[1]
df<-df[1:(n-5),]
もちろん、dim
コマンドを再割り当てステートメントに直接貼り付けることにより、1行で実行できます。これは再現可能なスクリプトの一部であり、手順をたどることができると思います...それ以外の場合は、そのような場合は別の変数(たとえば、df2
)に保存してから、冗長コピーを削除することを強くお勧めします'あなたが望むものを得たことを確認してください。
完全を期すためにdplyr
回答を追加する:
test_df <- data_frame(a = c(1,2,3,4,5,6,7,8,9,10),
b = c("a","b","c","d","e","f","g","h","i","j"))
slice(test_df, 1:(n()-5))
## A tibble: 5 x 2
# a b
# <dbl> <chr>
#1 1 a
#2 2 b
#3 3 c
#4 4 d
#5 5 e