0

Which native R function or which function in any other library would I be able to make a column listed with the one in the image below?

enter image description here

Dataset

lines = "Group
C
C
C
B
B
A
A
A
A
A
A
D
D
D
D
"

dataset = read.table(textConnection(lines), sep=";", h=T)
Thiago Fernandes
  • 273
  • 2
  • 12

1 Answers1

3

Try with cur_group_id() from dplyr:

library(dplyr)
#Code 1
newdf <- dataset%>% 
  mutate(Group=factor(Group,levels = unique(Group),ordered = T)) %>%
  group_by(Group) %>% mutate(Num=cur_group_id())

Output:

# A tibble: 15 x 2
# Groups:   Group [4]
   Group   Num
   <ord> <int>
 1 C         1
 2 C         1
 3 C         1
 4 B         2
 5 B         2
 6 A         3
 7 A         3
 8 A         3
 9 A         3
10 A         3
11 A         3
12 D         4
13 D         4
14 D         4
15 D         4

Or using base R:

#Code 2
dataset$Num <- as.integer(factor(dataset$Group,levels = unique(dataset$Group)))

Output:

   Group Num
1      C   1
2      C   1
3      C   1
4      B   2
5      B   2
6      A   3
7      A   3
8      A   3
9      A   3
10     A   3
11     A   3
12     D   4
13     D   4
14     D   4
15     D   4
Duck
  • 39,058
  • 13
  • 42
  • 84