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?
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)
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