Zmiana kolejności wierszy przy użyciu niestandardowej kolejności w R

mam następujące dane:

library(data.table)
DT = data.table(category=LETTERS[1:3], b=1:3)
DT
#    kategoria b
# 1:        A 1
# 2:        B 2
# 3:        C 3

Używając dplyr, jak zmienić kolejność wierszy, aby uzyskać określoną kolejność c („C”, „A”, „B”) w kategorii?

#    kategoria b
# 1:        C 3
# 2:        A 1
# 3:        B 2

1 odpowiedź

Najpierw utwórz wektor z literami w żądanej kolejności. Następnie dopasuj * wektor do zmiennej, która ma zostać posortowana. match zwraca indeksy (pierwszych) dopasowań, które można podłączyć do slice:

library(dplyr)

# utwórz wektor z literami w żądanej kolejności
x <- c("C", "A", "B")

DT %>%
  slice(match(x, category))
#   kategoria b
# 1        C 3
# 2        A 1
# 3        B 2

Innym sposobem byłoby przekonwertowanie „kategorii” na czynnik, ustawienie poziomów w pożądanej kolejności i użycie arrange:

DT %>%
  mutate(category =  factor(category, levels = x)) %>%
  arrange(category)    
#   kategoria b
# 1        C 3
# 2        A 1
# 3        B 2

Twoja odpowiedź

Zaloguj się aby odpowiedzieć.

Operiada

Operiada to polskojęzyczne forum informatyczne działające na zasadzie pytań i odpowiedzi.

Obserwowane tagi

Zaloguj się aby obserwować tagi.