Erstellen einer neuen Spalte basierend auf dem Zustand anderer Spalten in R.

China

Ich habe eine df wie unten mit 3 Spalten. Ich möchte eine neue Spalte hinzufügen, codedie die Spalte actionbasierend auf zwei anderen Spalten codiert . Hier ist Sudo-Code, wie man eine codeSpalte generiert

for each user_id  
    for each session
        if action V comes before P then Code column value is VP
        if action P and no V then Code column value is P
        if action P comes before V then Code column value is PV 
df <- read.table(text="
user_id  session   action
1          1         P
1          1         N
1          2         V
1          2         P         
1          2         V
2          1         N
2          1         V
2          1         V
2          1         P
2          2         P", header=T)

Mein Ergebnis wird also sein:

df
user_id  session   action   Code
1          1         P       P
1          1         N       P
1          2         V       VPV
1          2         P       VPV  
1          2         V       VPV
2          1         N       VP
2          1         V       VP
2          1         V       VP
2          1         P       VP
2          2         P       P

Kein Code sollte länger als VPV und PVP sein, daher sollten wir kein VPVV oder PVPV haben

MrFlick

Hier können wir eine kleine Hilfsfunktion schreiben, um den Code zu erhalten

get_code <- function(x, keep=c("P","V"), max_len=3) {
  as.character(x[x %in% keep]) %>% 
    {rle(.)$values} %>% 
    paste(collapse="") %>% 
    substr(1, max_len)
}

df %>% 
  group_by(user_id, session) %>% 
  mutate(code=get_code(action))]
#    user_id session action code 
#      <int>   <int> <fct>  <chr>
#  1       1       1 P      P    
#  2       1       1 N      P    
#  3       1       2 V      VPV  
#  4       1       2 P      VPV  
#  5       1       2 V      VPV  
#  6       2       1 N      VP   
#  7       2       1 V      VP   
#  8       2       1 V      VP   
#  9       2       1 P      VP   
# 10       2       2 P      P

Das rlehilft, die Folge von eindeutigen Werten ohne Duplikate zu erhalten, dann fügen wir diese in der Reihenfolge zusammen, in der sie angezeigt wurden.

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

Erstellen einer neuen Spalte basierend auf dem Zustand anderer

Erstellen einer neuen Spalte basierend auf den Werten anderer Spalten

Erstellen einer neuen Spalte basierend auf Werten anderer Spalten

Erstellen einer neuen Spalte basierend auf einer Gruppierung nach und der Bedingung anderer Spalten

Erstellen einer neuen Spalte in Pandas basierend auf den Bedingungen anderer Spalten

Erstellen einer neuen Spalte basierend auf dem Mittelwert anderer Werte in der Gruppe

Erstellen Sie eine Spalte basierend auf dem Wert anderer Spalten

Erstellen einer Spalte in einem Datenrahmen basierend auf Eingaben anderer Spalten

Erstellen einer kumulativen Anzahl basierend auf dem Wert anderer Spalten

Erstellen einer neuen Spalte basierend auf dem Anpassen von Gewichten aus anderen Spalten

IF-Anweisung - Erstellen einer neuen Spalte basierend auf zwei Spalten

Erstellen einer neuen Spalte basierend auf drei vorhandenen Spalten

Erstellen einer neuen Spalte basierend auf zwei Spalten in einem Datenrahmen

Erstellen Sie eine Funktion basierend auf dem Zustand einer anderen Spalte R.

R Erstellen einer neuen Spalte basierend auf dem Namen der geteilten Spalte

Erstellen einer neuen Spalte basierend auf Bedingungen für andere Spalten

R-Funktion zum Erstellen einer neuen Spalte basierend auf vorherigen Werten in denselben Spalten co

Zuweisen eines Werts zu einer neuen Spalte basierend auf den Werten anderer Spalten in Pandas

Hinzufügen einer neuen Spalte basierend auf der Summierung anderer Spalten

Erstellen Sie eine neue Spalte basierend auf den Zeichen einer Spalte und dem Zustand einer anderen

Erstellen einer neuen Spalte basierend auf mehreren bedingten Anweisungen in r

Generieren Sie einen neuen Datenrahmen mit einer booleschen Spalte basierend auf dem Vergleich anderer Datenrahmenwerte

KDB/Q: Erstellen Sie eine neue Spalte basierend auf dem Wert anderer Spalten

Erstellen einer neuen Spalte, die ein Vektor anderer Spalten ist

Erstellen Sie eine Pandas-Spalte basierend auf dem Zustand einer anderen Spalte

Erstellen Sie eine neue Spalte mit Gruppenbezeichnung basierend auf dem in einer anderen Spalte getesteten Zustand

Erstellen einer Funktion, die eine neue Spalte basierend auf den Werten anderer Spalten in einem Datenrahmen erstellt

Erstellen Sie mehrere Spalten in R basierend auf einer anderen Spalte

R Erstellen neuer Spalten basierend auf Faktoren in einer anderen Spalte

TOP Liste

  1. 1

    Hangfire funktioniert nicht wie erwartet mit ASP.NET Core 3.1

  2. 2

    Konvertiert nicht von Methodengruppe in Func <int>

  3. 3

    Wie berechnet man den Gesamtpreis einer Bestellung mit Rails?

  4. 4

    Identifizieren Sie die Werte der ersten Spalte pro ID und arbeiten Sie basierend auf diesem Wert

  5. 5

    Konvertieren Sie eine Textdatei mit mehreren Trennzeichen in CSV

  6. 6

    So greifen Sie auf eine Variable in einer Singleton-Klasse zu, die von einem Modul in Play 2.5 Scala verwendet wird

  7. 7

    So aktualisieren oder aktualisieren Sie alle Fragmente vom Viewpager Android

  8. 8

    Wie implementiere ich die "equals" -Methode für Generika mit "instanceof"?

  9. 9

    Probleme beim numerischen Integrieren einer multivariablen Funktion WRT einer einzelnen Variablen in Julia (mit hcubature)

  10. 10

    Was ist die idiomatischste Rust-Methode, um ein optionales Element eines Vec bedingt zu ändern?

  11. 11

    Printf gibt Zeichen aus, die über die angegebene Länge des Arrays hinausgehen

  12. 12

    So installieren Sie ein privates NPM-Paket über SSH

  13. 13

    findOneAndUpdate mit Push-Array-Elementen gibt Fehler im Mungo

  14. 14

    So verschieben Sie ein Bild in Flutter/Dart mit einem Draggable

  15. 15

    Verwendung eines Winkelmessers für Leistungstests

  16. 16

    Wie erstelle ich ein Objekt für ein Django-Modell mit vielen zu vielen Feldern?

  17. 17

    Beziehungen auf zusammengesetzten Schlüsseln mit sqlalchemy

  18. 18

    c # itextsharp absolute Textposition mehrzeilig

  19. 19

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

  20. 20

    Sind die folgenden 3 Möglichkeiten, Objekte zu definieren, identisch?

  21. 21

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

heißlabel

Archiv