我有一个数据框,我想从中删除最后N行.如果我想删除5行,我目前使用以下命令,在我看来这是相当复杂的:
df<- df[-seq(nrow(df),nrow(df)-4),]
Run Code Online (Sandbox Code Playgroud)
你将如何完成任务,是否有一个方便的功能,我可以在R中使用?
在unix中,我会使用:
tac file | sed '1,5d' | tac
Run Code Online (Sandbox Code Playgroud)
Sim*_*lon 64
head 负指数对此方便...
df <- data.frame( a = 1:10 )
head(df,-5)
# a
#1 1
#2 2
#3 3
#4 4
#5 5
Run Code Online (Sandbox Code Playgroud)
ps你的seq()例子可能写得稍微少些(?)使用命名参数by和length.out(缩写为len)这样的笨拙-seq(nrow(df),by=-1,len=5).
小智 14
这一行需要多一行,但更具可读性:
n<-dim(df)[1]
df<-df[1:(n-5),]
Run Code Online (Sandbox Code Playgroud)
当然,您可以通过将dim命令直接粘贴到重新赋值语句中来完成一行.我认为这是一个可重现的脚本的一部分,你可以回溯你的步骤......否则,强烈建议在这种情况下保存到一个不同的变量(例如df2),然后只有在你确定你得到之后才删除冗余副本你想要什么.
小智 6
添加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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
61026 次 |
| 最近记录: |