Pivot-Tabelle mit mehreren Spalten erstellen und nach eindeutigen Vorkommen aggregieren

EMK

Es fällt mir schwer, mich damit auseinanderzusetzen oder online eine Richtlinie zu finden.

Ich habe Mitgliedsdaten. Ich möchte sehen, wie viele Mitglieder in einem bestimmten Monat bestehen, bevor sie ihre Mitgliedschaft kündigen. Ich kann sehen, in welchem ​​​​Monat sie beigetreten sind, und ich kann sehen, wie lange sie aktiv sind, indem ich mir ihre Transaktionsnummer anschaue (sie erhöht sich jeden Monat um 1). Wenn ich also die Transaktionsnummern für jeden Monat nachverfolge, kann ich einen Wasserfall darüber erhalten, wie viele Personen in diesem Monat beigetreten sind und wie hoch der Drop-off war.

Der Clou ist, dass es manchmal mehrere Transaktionen innerhalb eines Monats durch dasselbe Mitglied gibt, aber ich möchte dieses Mitglied nur einmal zählen, also müsste ich dieses Mitglied nur einmal zählen.

Name | Joined Month | Transaction no
Adam | Jan          | 1
Adam | Jan          | 2
Adam | Jan          | 2
Ben  | Jan          | 1
Ben  | Jan          | 2
Ben  | Jan          | 3
Ben  | Jan          | 4
Cathy| Jan          | 1
Donna| Feb          | 1
Donna| Feb          | 2
Donna| Feb          | 3
Evan | Mar          | 1
Evan | Mar          | 1
Frank | Mar         | 1
Frank | Mar         | 2

Bei einer Aggregation für verschiedene Elemente mit Monaten als Spalten würde das Ergebnis etwa so aussehen:

Transaction# | Jan | Feb | March
1            | 3   | 1   | 2 
2            | 2   | 1   | 1
3            | 1   | 1   | 0
4            | 1   | 0   | 0

Alle Tipps oder Hinweise in die richtige Richtung wären sehr hilfreich. Sollte ich reshape2 oder ein ähnliches Paket verwenden? Hoffentlich habe ich die Erklärung oder die Formatierung nicht zerlegt, bitte zögern Sie nicht, Fragen zu stellen.

Vielen Dank!

Dean

Unten sehen Sie ein reproduzierbares Beispiel, das die Funktionen von Ordensverse dplyr::n_distinctund tidyr::spread.

Ich habe Ihre Daten zuerst als Tibble dargestellt (oder Sie könnten genauso gut einen Datenrahmen verwenden).

Als nächstes gruppieren wir nach Transactionnound JoinedMonthvor dem Zählen verschiedener Namen. Um es in Tabellenform zu erhalten, verwenden wir tidyr::spread. Wenn Sie die resultierenden Spalten in Monatsreihenfolge haben möchten, ist es wichtig, sicherzustellen, dass Ihr Datenrahmen sie als geordnete Faktoren enthält.

library(dplyr)
#> 
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#> 
#>     filter, lag
#> The following objects are masked from 'package:base':
#> 
#>     intersect, setdiff, setequal, union
library(tibble)
library(tidyr)

x <- tribble(
        ~Name , ~JoinedMonth,  ~Transactionno,
        "Adam" , "Jan"         , 1,
        "Adam" , "Jan"          , 2,
        "Adam" , "Jan"          , 2,
        "Ben"  , "Jan"          , 1,
        "Ben"  , "Jan"          , 2,
        "Ben"  , "Jan"          , 3,
        "Ben"  , "Jan"          , 4,
        "Cathy", "Jan"          , 1,
        "Donna", "Feb"          , 1,
        "Donna", "Feb"          , 2,
        "Donna", "Feb"          , 3,
        "Evan" , "Mar"          , 1,
        "Evan" , "Mar"          , 1,
        "Frank" , "Mar"         , 1,
        "Frank" , "Mar"         , 2  

)

x %>%
  group_by(Transactionno, JoinedMonth) %>% 
  summarise(ct = n_distinct(Name)) %>% 
  tidyr::spread(JoinedMonth, ct, fill = 0)
#> # A tibble: 4 x 4
#> # Groups:   Transactionno [4]
#>   Transactionno   Feb   Jan   Mar
#>           <dbl> <dbl> <dbl> <dbl>
#> 1            1.    1.    3.    2.
#> 2            2.    1.    2.    1.
#> 3            3.    1.    1.    0.
#> 4            4.    0.    1.    0.

Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

Gruppieren nach und aggregieren nach mehreren Spalten

Erstellen einer Pivot-Tabelle mit mehreren Spalten in R.

Gruppieren und Aggregieren nach mehreren Spalten in Pandas

Nach mehreren Spalten aggregieren, eine Spalte summieren und andere Spalten behalten? Neue Spalte basierend auf aggregierten Werten erstellen?

Pivot-Tabelle in Pandas mit mehreren Spalten

Pivot-Tabelle mit mehreren Spalten in SQL?

Pivot-Tabelle in SQL mit mehreren Spalten

Nach mehreren Spalten aggregieren und von lang auf breit umformen

Zusammenführen und Aggregieren nach mehreren Spalten in r?

Java Poi XSSF - Pivot-Tabelle mit mehreren erweiterbaren Spalten erstellen

Erstellen Sie eine Tabelle in Latex mit mehreren Zeilen und mehreren Spalten

Pivot und Unpivot einer Tabelle mit mehreren Spalten und Zeilen in SQL

Aggregieren mit mehreren Spalten und Abrufen des Durchschnittswerts in Pandas Python

Erstellen eines Berichts mit eindeutigen Datensätzen aus mehreren Spalten

Pivot und Summe mit mehreren Spalten

Gruppieren nach mehreren Spalten und mehreren Aggregationen in Pivot

MySQL-Tabelle mit eindeutigen Servern und mehreren Ports

Aggregieren Sie Werte nach mehreren Spalten

Pivot mit mehreren Spalten

Pivot-Tabelle mit mehreren Spalten von Groupby Python

Pandas-Pivot-Tabelle mit mehreren Spalten gleichzeitig

Pandas: Erstellen Sie Spalten mit einer Größe und einer Summe nach der Gruppierung nach mehreren Spalten

Pivot-Daten von Wide nach Long mit Spaltensuffix, um eine Tabelle mit mehreren Spalten mit Werten zu erhalten (mit Pivot_longer)

In R, So erstellen Sie eine Tabelle mit eindeutigen Zeilen aus einer anderen Tabelle und fügen dann neue Spalten zu einer neuen Tabelle hinzu

Tabelle aus mehreren Tabellen erstellen und neue Spalten hinzufügen

Erstellen einer Pivot-Tabelle mit mehreren Hierarchien in Pandas

Erstellen Sie eine Pivot-Tabelle mit mehreren hierarchischen Spaltengruppen

MySQL - Erstellen einer Tabelle mit nicht null in mehreren Spalten zusammen

php / mysql, um eine Tabelle mit mehreren identischen Feldern abzufragen und einen eindeutigen Eintrag für jedes Feld in einer zweiten Tabelle zu erstellen

TOP Liste

  1. 1

    So legen Sie mit dem Interface Builder unterschiedliche führende Speicherplätze für unterschiedliche Geräte fest

  2. 2

    Fügen Sie eine weitere Schaltfläche zu gwt Suggest Box hinzu

  3. 3

    Wie konvertiere ich einen Vektor von Bytes (u8) in eine Zeichenfolge?

  4. 4

    Wie kann ich in SCSS mehrere Klassen zu einer einzigen kombinieren?

  5. 5

    Wie konvertiert man einen Datenrahmen im langen Format in eine Liste mit einem geeigneten Format?

  6. 6

    Speichern Sie ein MPAndroidChart-Diagramm in einem Bild, ohne es in einer Aktivität anzuzeigen

  7. 7

    Gruppieren Sie Datenrahmenspalten nach ihrem Datum (die Spaltentitel enthalten) und fassen Sie die Instanzen von Einsen und Nullen in R . zusammen

  8. 8

    Tomcat - Leiten Sie den alten Kontextstamm zum neuen Kontextstamm um

  9. 9

    Eclipse Oxygen - Projekte verschwinden

  10. 10

    Wie wählt man Unterschiede mit drei Tabellen aus?

  11. 11

    Tic Tac Toe-Spiel im React-Reset-Button funktioniert nicht

  12. 12

    So berechnen Sie die Verfügbarkeit von Anwendungen (SLA)

  13. 13

    ElasticSearch BulkShardRequest ist aufgrund von org.elasticsearch.common.util.concurrent.EsThreadPoolExecutor fehlgeschlagen

  14. 14

    Wie kann ich den Kaskadenmodus global einstellen?

  15. 15

    Python: Spalten mit demselben Namen zusammenführen, wobei der Mindestwert beibehalten wird

  16. 16

    So erhalten Sie eine gleichmäßige Höhe für alle Eingabefelder

  17. 17

    Wie erstelle ich einen neuen übergeordneten Knoten außerhalb der .ref (/ path) in der Firebase-Echtzeitdatenbank mithilfe von Cloud-Funktionen (Typescript)?

  18. 18

    Was ist schneller: SUM über NULL oder über 0?

  19. 19

    Wie kann ich eine verschachtelte Schleife mit lapply in R ersetzen?

  20. 20

    Kann ich ein Tkinter-Canvas erstellen, das mehrere Zeilen in einem Text-Widget umfasst?

  21. 21

    Ärgerliches Problem mit yaml, das ich nicht lösen kann

heißlabel

Archiv