Gegevens hervormen tussen brede en lange formaten in r


Een dataframe in R kan in breed of lang formaat worden weergegeven.

Afhankelijk van uw doel wilt u mogelijk dat het dataframe een van deze specifieke formaten heeft.

De eenvoudigste manier om gegevens tussen deze formaten opnieuw vorm te geven, is door de volgende twee functies uit het Tidyr- pakket in R te gebruiken:

  • pivot_longer() : hervormt een datablok van breed formaat naar lang formaat.
  • pivot_wider() : hervormt een datablok van lang formaat naar breed formaat.

De volgende voorbeelden laten zien hoe u elke functie in de praktijk kunt gebruiken.

Voorbeeld 1: gegevens opnieuw vormgeven van breed naar lang

Stel dat we het volgende dataframe in R hebben dat momenteel een breed formaat heeft:

 #create data frame
df <- data. frame (player=c('A', 'B', 'C', 'D'),
                 year1=c(12, 15, 19, 19),
                 year2=c(22, 29, 18, 12))

#view data frame
df

  player year1 year2
1 to 12 22
2 B 15 29
3 C 19 18
4 D 19 12

We kunnen de functie pivot_longer() gebruiken om dit dataframe naar een lang formaat te roteren:

 library (tidyr)

#pivot the data frame into a long format
df %>% pivot_longer(cols=c(' year1 ', ' year2 '),
                    names_to=' year ',
                    values_to=' points ')

# A tibble: 8 x 3
  player year points
      
1 A year1 12
2 A year2 22
3 B year1 15
4 B year2 29
5 C year1 19
6 C year2 18
7 D year1 19
8 D year2 12

Merk op dat de kolomnamen jaar1 en jaar2 nu worden gebruikt als waarden in een nieuwe kolom genaamd „jaar“ en dat de waarden uit die oorspronkelijke kolommen in een nieuwe kolom worden geplaatst met de naam „punten“.

Het eindresultaat is een lang dataframe.

Opmerking : u kunt de volledige documentatie voor de functie pivot_longer() hier vinden.

Voorbeeld 2: Gegevens hervormen van lang naar breed

Stel dat we het volgende dataframe in R hebben dat momenteel een lang formaat heeft:

 #create data frame
df <- data. frame (player=rep(c('A', 'B'), each= 4 ),
                 year=rep(c(1, 1, 2, 2), times= 2 ),
                 stat=rep(c('points', 'assists'), times= 4 ),
                 amount=c(14, 6, 18, 7, 22, 9, 38, 4))

#view data frame
df

  player year stat amount
1 A 1 points 14
2 A 1 assists 6
3 A 2 points 18
4 A 2 assists 7
5 B 1 points 22
6 B 1 assists 9
7 B 2 points 38
8 B 2 assists 4

We kunnen de functie pivot_wider() gebruiken om dit dataframe naar een breed formaat te roteren:

 library (tidyr)

#pivot the data frame into a wide format
df %>% pivot_wider(names_from = stat, values_from = amount)

# A tibble: 4 x 4
  player year points assists
         
1 A 1 14 6
2 A 2 18 7
3 B 1 22 9
4 B 2 38 4

Houd er rekening mee dat de waarden in de statistiekkolom nu worden gebruikt als kolomnamen en de waarden in de bedragkolom worden gebruikt als celwaarden in deze nieuwe kolommen.

Het eindresultaat is een groot blok gegevens.

Opmerking : u kunt hier de volledige documentatie voor de functie pivot_wider() vinden.

Aanvullende bronnen

In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende taken in R kunt uitvoeren:

Hoe unieke waarden per groep te tellen in R
Hoe niet-NA-waarden in R te tellen
Hoe relatieve frequentietabellen te maken in R

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert