Transpozycja zestawu danych jest jedną z takich operacji, która przekształca dane w celu spełnienia określonych wymagań analizy. Transponowanie zestawu danych obejmuje odwrócone wiersze i kolumny zestawu danych, w wyniku czego powstaje nowy zestaw danych z przełączanymi kolumnami i wierszami. R zapewnia pewne funkcje transponowania zestawu danych. W tym artykule omówimy różne metody transponowania ramek danych w R.
Przykład 1: transpozycja ramki danych za pomocą funkcji T() w R
Funkcja t() jest wbudowaną funkcją R, która służy do transponowania DataFrame. Jednak konwertuje DataFrame na macierz, więc każda kolumna nienumeryczna jest przekształcana w ciągi znaków. Rozważ następujący skrypt R, aby transponować DataFrame:
MojeDane = ramka.danych(c1 = c(1, 2, 3, 4, 5),
c2 = c(6, 7, 8, 9, 10),
c3 = c(11, 12, 13, 14, 15))
row.names(MojeDane) = c('r1','r2','r3','r4','r5')
t(Moje dane)
Tutaj deklarujemy wektor MyData i przypisujemy do niego data.frame() . Wstawiamy przykładowe dane, które zawierają trzy kolumny z wartościami w funkcji data.frame(). Następnie używamy funkcji „row.names()” i ustawiamy nazwy wierszy dla wartości DataFrame „MyData”. Na koniec transponujemy ramkę danych „MyData” za pomocą funkcji t().
Poniższe dane wyjściowe przedstawiają transpozycję ramki DataFrame, w której nazwy wierszy oryginalnej ramki DataFrame stają się nazwami kolumn transponowanej ramki DataFrame, a nazwy kolumn oryginalnej ramki DataFrame są tracone podczas transpozycji:
Przykład 2: transpozycja ramki danych za pomocą funkcji Transpose() w języku R
Funkcja transpose() z pakietu „data.table” może być również użyta do transpozycji DataFrame i zwraca DataFrame. Dlatego musimy upewnić się, że „data.table” jest zainstalowany w R. Jeśli nie zostanie znaleziony, możemy go zainstalować za pomocą następującego polecenia:
install.packages('tabela danych')Teraz możemy łatwo zaimportować pakiet „data.table”, aby uzyskać dostęp do funkcji transpose() w R w celu transpozycji DataFrame. Rozważmy następujący kod R, w którym wywoływana jest funkcja transpose() w celu transpozycji DataFrame:
df <- ramka.danych(A = c(1:5),
B = c(6:10),
C = c(11:15))
wiersze.nazwy(df) <- c('r1', 'r2', 'r3', 'r4', 'r5')
df
Tutaj tworzymy ramkę danych „df” z trzema kolumnami i pięcioma wierszami, gdzie każda kolumna zawiera odpowiednio sekwencję liczb od 1 do 5, od 6 do 10 i od 11 do 15. Dodatkowo przypisujemy nazwy wierszy DataFrame za pomocą funkcji row.names(). Następnie drukujemy oryginalną ramkę DataFrame na konsoli.
Oryginalna ramka DataFrame jest pokazana na ekranie tutaj:
Następnie transponujemy oryginalną ramkę danych „df”, przełączając wiersze i kolumny ramki danych.
biblioteka (tabela danych)df_trans <- transpozycja (df)
nazwy wierszy (df_trans) <- nazwy kolumn (df)
nazwy kolumn (df_trans) <- nazwy wierszy (df)
df_trans
W tym celu najpierw ładujemy bibliotekę „data.table”, która zapewnia narzędzia do pracy z danymi tabelarycznymi w R. Następnie używana jest funkcja transpose() z biblioteki „data.table”. Wynikowa transponowana ramka DataFrame jest przypisywana do nowej zmiennej, którą jest „df_t”. Następnie przypisujemy nazwy kolumn oryginalnej ramki danych „df” jako nazwy wierszy do transponowanej ramki danych „df_trans” za pomocą funkcji rownames(). Następnie nazwy wierszy oryginalnej ramki danych „df” są przypisywane jako nazwy kolumn do transponowanej ramki danych „df_trans” za pomocą funkcji colnames().
W ten sposób na wyjściu uzyskuje się oryginalną transpozycję DataFrame. Reprezentuje każdą komórkę w transponowanej ramce DataFrame, w której zawiera tę samą wartość, co odpowiednia komórka w oryginalnej ramce DataFrame, ale w innej pozycji z powodu transpozycji.
Przykład 3: Transpozycja ramki danych za pomocą funkcji Tidyr Library Gather() w R
Pakiet tidyr R może być użyty do transpozycji DataFrame. Ta metoda jest przydatna, gdy chcemy przekonwertować ramkę DataFrame z formatu szerokiego na długi, a następnie z powrotem na format szeroki z zamienionymi wierszami i kolumnami. Zapewnia kilka funkcji do przekształcania i reorganizacji danych. Wcześniej musimy pobrać pakiet tidyr, używając następującego polecenia:
install.packages('porządek')Rozważmy następujący kod R. Używamy funkcji zbierania() tego pakietu, aby dłużej transponować szeroką ramkę DataFrame:
biblioteka (porządek)n = 10
porządek_df = data.ramka(
ID = c(1:n),
Exam1_Marks = c(73, 219, 86, 192, 99,
188, 72, 35, 91, 165),
Egzamin2_Oceny = c(217, 89, 66, 334, 99,
101, 108, 233, 45, 300),
Egzamin3_Oceny = c(39, 101, 209, 289, 176,
120, 89, 119, 199, 96))
porządek_df
Tutaj „szeroka” ramka DataFrame jest konwertowana na „długą” ramkę DataFrame za pomocą tidyr. Najpierw tworzymy DataFrame „tidy_df” z trzema kolumnami. Każda z tych kolumn ma 10 wartości.
Długa ramka DataFrame jest pokazana na następującym ekranie wyjściowym:
Następnie przekazujemy ramkę DataFrame „tidy_df” do funkcji zbierania () za pomocą operatora potoku „%>%”. Funkcja zbierania() z tidyr służy do przekształcenia „tidy_df” w długą ramkę danych. Funkcja zbierania () pobiera dane wejściowe o nazwie „Egzaminy”, która wskazuje nową kolumnę do przechowywania nazw zmiennych tworzonych podczas transformacji. „Oceny” określa kolumnę, w której gromadzone są razem „Oceny_egzaminu” i „Oceny_egzaminu2”.
długi <- schludny_df %>%zbierać (egzaminy, oceny,
Exam1_Marks:Exam2_Marks)
długi
Dane wyjściowe wyświetlają długą ramkę DataFrame w konsoli, która ma teraz „długi” format z trzema kolumnami:
Przykład 4: transpozycja ramki danych za pomocą funkcji Pivot_Wider() w języku R
Następną zaawansowaną funkcją, której używamy do transponowania DataFrame, jest funkcja pivot_wider(). Pivot_wider() to funkcja z pakietu tidyr w R, która pozwala nam przekształcić „długi” DataFrame w „szeroki” DataFrame. Funkcja przyjmuje trzy główne argumenty, które są omówione w następującym kodzie R:
biblioteka (porządek)df <- ramka danych (
id = c(1, 2, 3, 1, 2, 3),
var = c('v1', 'v1', 'v1', 'v2', 'v2', 'v2'),
wartość = c(4, 5, 6, 7, 8, 9)
)
df
Tutaj najpierw ładujemy pakiet tidyr za pomocą funkcji library(). Następnie ustawiamy przykładową ramkę DataFrame w „df”. DataFrame „df” ma trzy kolumny zawierające odpowiednio różne wartości. Przykładową ramkę DataFrame można zobaczyć w następujących danych wyjściowych:
Następnie funkcja pivot_wider() z tidyr jest używana do przekształcenia „df” w „df_wide”.
df_wide <- pivot_wider(df, nazwy_z = zmienna, wartości_z = wartość)szerokość_df
Funkcja pivot_wider() przyjmuje tutaj trzy argumenty. Po pierwsze, wymaga przekształcenia ramki danych „df”. Następnie argument names_from ustawia nazwę kolumny, która będzie używana dla nowych nazw zmiennych. Wreszcie argument values_from określa nazwę kolumny, która ma być używana dla nowych wartości.
Poniższe dane wyjściowe reprezentują transpozycję długiej ramki danych do szerokiej ramki danych:
Wniosek
Użyliśmy różnych sposobów transpozycji DataFrame w R. Pierwszy przykład jest ustawiony za pomocą wbudowanej metody t(). Wszystkie inne przykłady wymagały zaimportowania pakietów, abyśmy mogli użyć ich funkcji do transpozycji DataFrame. Jednak najlepsza metoda zależy od konkretnej sytuacji i struktury danych, z którymi pracujesz.