So stacken Sie DataFrame Spalten in R

Von Fabian
Kategorie: R
Tags: Operationen
Lesezeit: 2 Minuten

Oft möchten Sie möglicherweise zwei oder mehr Dataframespalten in einer Spalte in R stapeln.

Zum Beispiel möchten Sie vielleicht von hier:

  person trial outcome1 outcome2
     A     1        7        4
     A     2        6        4
     B     1        6        5
     B     2        5        5
     C     1        4        3
     C     2        4        2

zu folgendem gelangen:

   person trial outcomes  value
      A     1   outcome1     7
      A     2   outcome1     6
      B     1   outcome1     6
      B     2   outcome1     5
      C     1   outcome1     4
      C     2   outcome1     4
      A     1   outcome2     4
      A     2   outcome2     4
      B     1   outcome2     5
      B     2   outcome2     5
      C     1   outcome2     3
      C     2   outcome2     2

In diesem Tutorial werden zwei Methoden erläutert, die Sie in R verwenden können, um dies zu tun.

Methode 1: Verwenden Sie die Stack-Funktion in Base R

Der folgende Code zeigt, wie Spalten mithilfe der Stapelfunktion in Basis R gestapelt werden:

# Originaldataframe erstellen
data <- data.frame(person=c('A', 'A', 'B', 'B', 'C', 'C'),
                   trial=c(1, 2, 1, 2, 1, 2),
                   outcome1=c(7, 6, 6, 5, 4, 4),
                   outcome2=c(4, 4, 5, 5, 3, 2))

#stapeln Sie die dritte und vierte Spalte
cbind(data[1:2], stack(data[3:4]))

   person trial values      ind
1       A     1      7 outcome1
2       A     2      6 outcome1
3       B     1      6 outcome1
4       B     2      5 outcome1
5       C     1      4 outcome1
6       C     2      4 outcome1
7       A     1      4 outcome2
8       A     2      4 outcome2
9       B     1      5 outcome2
10      B     2      5 outcome2
11      C     1      3 outcome2
12      C     2      2 outcome2

Methode 2: Verwenden Sie die melt-Funktion von Reshape2

Der folgende Code zeigt, wie Spalten mithilfe der melt-Funktion aus der reshape2-Bibliothek gestapelt werden:

# Bibliothek laden
library(reshape2)

# Originaldatenrahmen erstellen
data <- data.frame(person=c('A', 'A', 'B', 'B', 'C', 'C'),
                   trial=c(1, 2, 1, 2, 1, 2),
                   outcome1=c(7, 6, 6, 5, 4, 4),
                   outcome2=c(4, 4, 5, 5, 3, 2))

melt(data, id.var = c('person', 'trial'), variable.name = 'outcomes')

   person trial outcomes value
1       A     1 outcome1     7
2       A     2 outcome1     6
3       B     1 outcome1     6
4       B     2 outcome1     5
5       C     1 outcome1     4
6       C     2 outcome1     4
7       A     1 outcome2     4
8       A     2 outcome2     4
9       B     1 outcome2     5
10      B     2 outcome2     5
11      C     1 outcome2     3
12      C     2 outcome2     2

Die vollständige Dokumentation zur Schmelzfunktion finden Sie hier.

Zusätzliche Ressourcen

So wechseln Sie zwei Spalten in R
So benennen Sie Spalten in R um
So summieren Sie bestimmte Spalten in R

Statistik: Der Weg zur Datenanalyse

* Amazon Affiliate Link


Das könnte Sie auch interessieren: