我是R中的新手,现在我有一个25行3列的“a”。我想添加一列,这一列将是:第1-5行将是"A“,第6-10行将是”B“.,然后它将向上移动到最后一行。是否可以实现自动添加?我自动地将五行中的每一行命名为"A“、"B”、"C“、”D“……,而不管原始的"a”中有多少行。
a<-matrix(c(1:75),nrow=25,ncol=3,byrow = T)
a
a<-as.data.frame(a)发布于 2020-11-18 13:46:02
您可以使用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
#...
#...发布于 2020-11-18 14:55:31
备用解决方案tidyverse方式
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。
https://stackoverflow.com/questions/64887706
复制相似问题