如何使用R删除 Dataframe 中的前N行和后N行?

5vf7fwbs  于 2023-01-03  发布在  其他
关注(0)|答案(2)|浏览(357)

我有一个2M+行的 Dataframe df,如下所示:

LOCUS POS COUNT
1: CP007539.1   1     4
2: CP007539.1   2     7
3: CP007539.1   3    10
4: CP007539.1   4    15
5: CP007539.1   5    21
6: CP007539.1   6    28

目前,我使用此命令来删除前1000行和后1000行:

> df_adj = df[head(df$POS,-1000),]
> df_adj = tail[(df_adj$POS,-1000),]

但即使是我也能看到这可以用更好的方式来做,有什么建议吗?

qij5mzcb

qij5mzcb1#

您可以通过指定要保留在最终数据集中的行的范围来执行此操作:

df_adj <- df[1001:( nrow(df) - 1000 ),]

只需确保有足够的行来执行此操作。更安全的方法可能是:

df_adj <- if( nrow(df) > 2000 ) df[1001:( nrow(df) - 1000 ),] else df
gfttwv5a

gfttwv5a2#

另一种方法是将seq_lennrowrange组合:

df <- head(iris, 10)      
df[-range(seq_len(nrow(df))), ]

这将生成以下输出:

# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
# 2          4.9         3.0          1.4         0.2  setosa
# 3          4.7         3.2          1.3         0.2  setosa
# 4          4.6         3.1          1.5         0.2  setosa
# 5          5.0         3.6          1.4         0.2  setosa
# 6          5.4         3.9          1.7         0.4  setosa
# 7          4.6         3.4          1.4         0.3  setosa
# 8          5.0         3.4          1.5         0.2  setosa
# 9          4.4         2.9          1.4         0.2  setosa

相关问题