Identifizieren der ersten Übereinstimmungsposition in einer Zeichenfolge

7

Ich habe eine Zeichenkette ("00010000") und muss identifizieren, an welcher Position wir die erste "1" sehen. (Dies sagt mir, in welchem ​​Monat ein Kunde aktiv ist)

Ich habe ein Dataset, das so aussieht:

%Vor%

Ich möchte ein neues Feld erstellen, das für jede ID den ersten Monat angibt.

Ich kann dies manuell mit einer verschachtelten ifelse-Funktion tun:

%Vor%

Was mir das gewünschte Ergebnis gibt:

%Vor%

Dies ist jedoch keine ideale Lösung für meine Daten, die 36 Monate enthält.

Ich würde gerne eine Schleife mit einer ifelse-Anweisung verwenden, aber ich habe wirklich mit der Syntax zu kämpfen

%Vor%

Irgendwelche Ideen würden sehr geschätzt werden

    
Chris L 18.03.2015, 13:17
quelle

7 Antworten

10

Überspringen Sie die Schleife und ifelse :

%Vor%

Dies wird in Ihrem data.frame nicht funktionieren, weil Sie seq implizit auf Faktor umgestellt haben, also tun Sie einfach:

%Vor%

Edit: Nur zum Spaß, da Frank seinen Kommentar nicht in eine Antwort umgewandelt hat, hier ist strsplit solution:

%Vor%     
Thomas 18.03.2015, 13:23
quelle
12

Oder probiere das stringi -Paket

aus %Vor%     
David Arenburg 18.03.2015 13:24
quelle
8

Sie können gregexpr verwenden.

%Vor%     
xraynaud 18.03.2015 13:24
quelle
8

Folgendes könnte diese Aufgabe übernehmen:

%Vor%     
Ruthger Righart 18.03.2015 13:29
quelle
6

Einige Vergleiche:

%Vor%     
dimitris_ps 18.03.2015 15:38
quelle
3

Eine andere, die log verwendet:

%Vor%     
nicola 18.03.2015 13:33
quelle
3

Eine weitere Option, die sub

verwendet %Vor%     
akrun 18.03.2015 14:29
quelle

Tags und Links