So extrahieren Sie nur die Aussagen von Person A in einer Konversation zwischen zwei Personen A und B

8

Ich habe eine Aufzeichnung von Gesprächen zwischen zwei willkürlichen Personen A und B.

%Vor%

Der Datenrahmen sieht so aus:

%Vor%

Nun möchte ich nur den Teil von Person A extrahieren und in einen Datenrahmen einfügen. Das Ergebnis sollte sein:

%Vor%     
Rami Al-Fahham 23.04.2015, 08:34
quelle

5 Antworten

4

Ich bin ein großer Fan davon, dieses Problem so zu lösen, dass Sie auf alle Daten zugreifen können (einschließlich des Diskurses von Person B). Ich liebe tidyr 's extract für diese Art der Spaltenaufteilung. Früher habe ich einen do.call(rbind, strsplit())) -Ansatz verwendet, aber ich liebe, wie sauber der extract -Ansatz ist.

%Vor%

Oder reduzieren Sie sie, wie Sie in der gewünschten Ausgabe zeigen:

%Vor%

Bearbeiten : In Wirklichkeit vermute ich, dass Ihre Daten echte Namen wie "John Smith" vs. "Person A" haben. Wenn dies der Fall ist, erfasst dieser erste Regex-Split einen Vor- und Nachnamen, der Begrenzungen gefolgt von einem Doppelpunkt verwendet:

%Vor%     
Tyler Rinker 23.04.2015, 12:14
quelle
2

Verwenden Sie das Paket stringr

Zuerst teilen wir die Zeichenfolge mit "Person A:" als Trennzeichen

%Vor%

Damit erhalten wir alle von A angefangenen Konversationsabschnitte mit der (optionalen) Antwort von B

Wir entfernen jetzt die Antworten von B

%Vor%

Und schließlich listen wir jedes Element auf und fügen es in eine Zeichenfolge zusammen.

%Vor%

Ergebnis:

%Vor%

Funktioniert auch in dem Fall, in dem B die Konversation startet, wenn nur eine der beiden spricht und auch für lange Konversationen.

    
nico 23.04.2015 08:49
quelle
1

Verwendung von data.table and gsub 'von der Basis R:

%Vor%     
Arun 23.04.2015 13:01
quelle
0

Es funktioniert möglicherweise nicht in allen Fällen. Besonders diejenigen, bei denen die Konversation von Person B gestartet wird. Lass es mich wissen, wenn es der Fall ist. Sonst versuche

%Vor%     
dimitris_ps 23.04.2015 08:44
quelle
0

Dies ist mein Versuch, ich habe auch eine zweite von Person B begonnene Konversation hinzugefügt und eine Konversation auch von Person B beendet, nur um auch diese Fälle zu erfassen:

%Vor%

Was ich mit gsub mache ist Entfernen:

  1. Person A:
  2. Die Sätze von Person B gefolgt von den Sätzen von A
  3. B's Sätze am Ende der Conversaiont \Z

Ich habe die perl = TRUE verwendet, weil das Leben zu kurz ist, um den Rückspiegel nicht zu benutzen ... ähm ... der Lookbehind-Operator.

    
mucio 23.04.2015 09:55
quelle