Jak transponować ramkę danych za pomocą dplyr


Do transpozycji ramki danych przy użyciu pakietu dplyr w R można użyć następującej podstawowej składni:

 library (dplyr)
library (tidyr)

df %>%
    pivot_wider(names_from = column1, values_from = column2)

Argument Names_from określa wartości, które mają zostać użyte w nazwach kolumn w transponowanej ramce danych, a argument Values_from określa wartości komórek, które mają zostać użyte w transponowanej ramce danych.

Należy zauważyć, że operator potoku ( %>% ) pochodzi z pakietu dplyr , natomiast funkcja przestawna() pochodzi z pakietu Tidyr .

Poniższy przykład pokazuje, jak zastosować tę składnię w praktyce.

Przykład: transponuj ramkę danych za pomocą dplyr

Załóżmy, że mamy następującą ramkę danych w R, która zawiera informacje o różnych drużynach koszykówki:

 #create data frame
df <- data. frame (team=c('Mavs', 'Nets', 'Kings', 'Lakers'),
                 dots=c(99, 104, 119, 113))

#view data frame
df

    team points
1 Mavs 99
2 Nets 104
3 Kings 119
4 Lakers 113

Załóżmy teraz, że chcemy transponować ramkę danych, tak aby nazwy zespołów były używane jako nazwy kolumn, a wartości punktowe jako wartości komórek wewnątrz ramki danych.

W tym celu możemy użyć następującej składni:

 library (dplyr)
library (tidyr)

#transpose data frame
df %>%
    pivot_wider(names_from = team, values_from = points)

# A tibble: 1 x 4
   Mavs Nets Kings Lakers
      
1 99 104 119 113

Ramka danych została transponowana w taki sposób, że nazwy zespołów są używane jako kolumny, a wartości punktowe są używane jako wartości komórek w ramce danych.

Należy zauważyć, że wynikowa ramka danych zawiera teraz 1 wiersz i 4 kolumny.

Powiązane: Wprowadzenie do funkcji obrotowej() w języku R

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak wykonywać inne typowe zadania za pomocą dplyr:

Jak filtrować wiersze zawierające określony ciąg za pomocą dplyr
Jak obliczyć częstotliwości względne za pomocą dplyr
Jak wybrać pierwszy wiersz według grupy za pomocą dplyr

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *