R 每 n 行删除几行

R Deleting several rows each nth row

提问人:Theresa M. 提问时间:4/18/2023 最后编辑:benson23Theresa M. 更新时间:4/18/2023 访问量:32

问:

例如,如何用 NA 替换每 7 行的前 3 行?

df<-data.frame(A=1:50, B=rnorm(50), C=rep(letters, length.out = 50,each=7))

结果应如下所示:

一个 B C
1 一个
2 一个
3 一个
4 0.8 一个
5 0.4 一个
6 1.9 一个
7 0.6 一个
8 B
9 B
10 B
11 2.0 B
12 1.4 B
13 0.9 B
14 2.6 B
15 C
R 数据帧 序列

评论

0赞 Theresa M. 4/19/2023
有没有办法根据 C 将 B 替换为 NA?如果 C 更改,则替换前 3 个

答:

2赞 Allan Cameron 4/18/2023 #1

你可以使用一些模块化算术seq(nrow(df))

within(df, B <- ifelse(seq(nrow(df)) %% 7 %in% 1:3, NA, B))
#>     A           B C
#> 1   1          NA a
#> 2   2          NA a
#> 3   3          NA a
#> 4   4  0.02741642 a
#> 5   5 -0.67145705 a
#> 6   6  0.94627769 a
#> 7   7  0.25816784 a
#> 8   8          NA b
#> 9   9          NA b
#> 10 10          NA b
#> 11 11 -1.15711593 b
#> 12 12 -0.01334942 b
#> 13 13  0.24906125 b
#> 14 14  0.77097286 b
#> 15 15          NA c
#> 16 16          NA c
#> 17 17          NA c
#> 18 18  0.49594857 c
#> 19 19 -0.63520868 c
#> 20 20 -0.57030124 c
#> 21 21 -0.21919383 c
#> 22 22          NA d
#> 23 23          NA d
#> 24 24          NA d
#> 25 25  0.25040139 d
#> 26 26 -0.48032016 d
#> 27 27 -1.74825005 d
#> 28 28 -0.51286524 d
#> 29 29          NA e
#> 30 30          NA e
#> 31 31          NA e
#> 32 32 -0.39429720 e
#> 33 33  1.26663095 e
#> 34 34 -1.09251405 e
#> 35 35  0.75869713 e
#> 36 36          NA f
#> 37 37          NA f
#> 38 38          NA f
#> 39 39  0.02250949 f
#> 40 40 -0.02175766 f
#> 41 41 -1.71951468 f
#> 42 42 -0.59438247 f
#> 43 43          NA g
#> 44 44          NA g
#> 45 45          NA g
#> 46 46 -0.26508709 g
#> 47 47  0.34341742 g
#> 48 48 -1.09915861 g
#> 49 49  1.86775918 g
#> 50 50          NA h

创建于 2023-04-18 使用 reprex v2.0.2

2赞 benson23 4/18/2023 #2

或者我们可以提供一系列行位置,该序列将转换为 .NA

df[sort(unlist(sapply(1:3, \(x) seq(x, nrow(df), 7)))), 2] <- NA

    A           B C
1   1          NA a
2   2          NA a
3   3          NA a
4   4 -0.16018593 a
5   5  1.09432118 a
6   6  1.09231598 a
7   7  1.09955174 a
8   8          NA b
9   9          NA b
10 10          NA b
11 11 -1.73993188 b
12 12 -0.63098206 b
13 13  1.37677644 b
14 14  1.09286735 b
15 15          NA c
16 16          NA c
17 17          NA c
18 18 -0.41984647 c
19 19 -0.46185401 c
20 20  0.32764327 c
21 21 -0.91431370 c
22 22          NA d
23 23          NA d
24 24          NA d
25 25 -0.16228344 d
26 26  0.31038085 d
27 27  0.49325777 d
28 28 -0.48162096 d
29 29          NA e
30 30          NA e
31 31          NA e
32 32  1.23543253 e
33 33  0.26540767 e
34 34 -1.09335615 e
35 35  0.15170924 e
36 36          NA f
37 37          NA f
38 38          NA f
39 39  0.09250263 f
40 40  0.27756558 f
41 41  0.01371171 f
42 42  0.75037088 f
43 43          NA g
44 44          NA g
45 45          NA g
46 46  0.92522200 g
47 47 -0.09556295 g
48 48  0.48275797 g
49 49 -1.11095957 g
50 50          NA h