Jak transponować DataFrame w R

Jak Transponowac Dataframe W R



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.