如何将列添加到data.frame
我是R的新手,现在我有一个25行3列的“a”。我想添加一列,这列将是:第1-5行将是“a”,第6-10行将是“B”…,然后它将上升到最后一行。是否可以实现自动添加?我自动将五行中的每一行命名为“A”、“B”、“C”、“D”如何将列添加到data.frame,r,R,我是R的新手,现在我有一个25行3列的“a”。我想添加一列,这列将是:第1-5行将是“a”,第6-10行将是“B”…,然后它将上升到最后一行。是否可以实现自动添加?我自动将五行中的每一行命名为“A”、“B”、“C”、“D” a您可以使用rep: a$new_col <- LETTERS[rep(1:nrow(a), each = 5, length.out = nrow(a))] a # V1 V2 V3 new_col #1 1 2 3 A #2 4 5
a您可以使用rep
:
a$new_col <- LETTERS[rep(1:nrow(a), each = 5, length.out = nrow(a))]
a
# V1 V2 V3 new_col
#1 1 2 3 A
#2 4 5 6 A
#3 7 8 9 A
#4 10 11 12 A
#5 13 14 15 A
#6 16 17 18 B
#7 19 20 21 B
#8 22 23 24 B
#9 25 26 27 B
#10 28 29 30 B
#11 31 32 33 C
#12 34 35 36 C
#...
#...
a$new\u col替代解决方案tidyverse
way
library(tidyverse)
a %>% mutate(id = row_number()-1,
new_col = LETTERS[(id%/%5)+1]) %>%
select(-id)
V1 V2 V3 new_col
1 1 2 3 A
2 4 5 6 A
3 7 8 9 A
4 10 11 12 A
5 13 14 15 A
6 16 17 18 B
7 19 20 21 B
8 22 23 24 B
9 25 26 27 B
10 28 29 30 B
11 31 32 33 C
12 34 35 36 C
13 37 38 39 C
14 40 41 42 C
15 43 44 45 C
16 46 47 48 D
17 49 50 51 D
18 52 53 54 D
19 55 56 57 D
20 58 59 60 D
21 61 62 63 E
22 64 65 66 E
23 67 68 69 E
24 70 71 72 E
25 73 74 75 E
注意:在26x5行用完后,它将添加NA
library(tidyverse)
a %>% mutate(id = row_number()-1,
new_col = LETTERS[(id%/%5)+1]) %>%
select(-id)
V1 V2 V3 new_col
1 1 2 3 A
2 4 5 6 A
3 7 8 9 A
4 10 11 12 A
5 13 14 15 A
6 16 17 18 B
7 19 20 21 B
8 22 23 24 B
9 25 26 27 B
10 28 29 30 B
11 31 32 33 C
12 34 35 36 C
13 37 38 39 C
14 40 41 42 C
15 43 44 45 C
16 46 47 48 D
17 49 50 51 D
18 52 53 54 D
19 55 56 57 D
20 58 59 60 D
21 61 62 63 E
22 64 65 66 E
23 67 68 69 E
24 70 71 72 E
25 73 74 75 E