I have data as follows:
dat <- data.frame(type=c("Y","Y","Y","Y","X","X","X","X","Z","Z","Z","Z"), cat=c("A", "B", "C", "D","A", "B", "C", "D","A", "B", "C", "D"), id=c(1,2,3,4,5,6,7,8,9,10,11,12))
type cat id
1 Y A 1
2 Y B 2
3 Y C 3
4 Y D 4
5 X A 5
6 X B 6
7 X C 7
8 X D 8
9 Z A 9
10 Z B 10
11 Z C 11
12 Z D 12
I need the rows to be sorted by type in the order x <- c("Z", "X", "Y"), while keeping the order of cat in tact.
Because the rows are double the following does not work.
library(dplyr)
x <- c("Z", "X", "Y")
dat %>%
slice(match(x, type))
I tried to adapt x:
strat_order_multiple_cat <- as.vector()
for (i in seq_along(x)){
temp <- rep(x[[i]], length( unique(dat$cat) ) )
strat_order_multiple_cat <- append(strat_order_multiple_cat,temp)
}
dat %>%
slice(match(strat_order_multiple_cat , type))
But that gives:
type cat
1 Z A
2 Z A
3 Z A
4 Z A
5 X A
6 X A
7 X A
8 X A
9 Y A
10 Y A
11 Y A
12 Y A
How should I do this?