如何删除 R 中的每 n 个行范围

how to delete every nth range of rows in R

提问人:Rustam 提问时间:2/16/2023 最后编辑:MaëlRustam 更新时间:2/16/2023 访问量:73

问:

假设我有一个数据帧 df,它包含 450 行。我想删除从 10 到 18 的行(即 10、11、12、13、14、15、16、17、18)。然后从 28 到 36 同样地排,然后是 46:54。依此类推,直到删除从 442 到 450 的行。

伙计们,有什么建议吗?

R 数据帧 筛选器 序列

评论

0赞 PGSA 2/16/2023
你能展示一下你已经尝试过的东西吗?

答:

3赞 Maël 2/16/2023 #1

创建一个并删除这些行。第一个参数 , 是每个序列的长度(8,对每个序列重复);第二个 , 是每个序列 (10, 28, ...) 的起点。sequencenvecfrom

n = 450
len = n %/% 18
s <- sequence(nvec = rep(9, len), from = seq(10, n, 18))
# [1]  10  11  12  13  14  15  16  17  18  28  29  30  31  32  33  34
# [17]  35  36  46  47  48  49  50  51  52  53  54  64  65  66  67  68
# [33]  69  70  71  72  82  83  84  85  86  87  88  89  90 100 101 102
# ...

your_df[-s, ]

您还可以像这样创建序列:

rep(10:18, len) + rep(18*(0:(len - 1)), each = 9)
# [1]  10  11  12  13  14  15  16  17  18  28  29  30  31  32  33  34
# [17]  35  36  46  47  48  49  50  51  52  53  54  64  65  66  67  68
# [33]  69  70  71  72  82  83  84  85  86  87  88  89  90 100 101 102
# ...

评论

0赞 Rustam 2/16/2023
谢谢,它奏效了!唯一奇怪的部分是“序列”没有删除最后 9 行,442-450
1赞 Maël 2/16/2023
请参阅编辑。只需将 1 加到 len
0赞 Rustam 2/17/2023
对不起,伙计,我没有得到你的最后一点。你在哪里加了 1 到 len –?我尝试了两种“序列”方式,但结果是一样的,它没有删除最后 9 行,442-450。
1赞 Maël 2/17/2023
我更改了对象。编辑前是 24 岁,现在是 25 岁。 包括 442-450lens