Muster aus einer Stringspalte ausschneiden

Wie rufe ich R-Funktionen auf, wie selektiere ich Daten, ich weiß nicht genau ....

Moderatoren: EDi, jogo

Antworten
Z3r0
Beiträge: 2
Registriert: Sa Apr 20, 2019 2:14 pm

Muster aus einer Stringspalte ausschneiden

Beitrag von Z3r0 »

Hallo,

ich habe einen Datensatz, der Inhalte von Posts von Social Media Seiten enthält. Dabei macht mir die Spalte "Kommentar" viele Probleme. Mein Ziel ist es bestimmte Muster aus dieser Spalte auszuschneiden und in eine neue Spalte zu implemtieren.
Ich versuch dies mal anhand eines Beispiels etwas zu konkretisieren:

Kommentar
\U0001f1233\U0001f2311Hallo Welt \u2019 #Sommer
\U0001f2678 Es ist schön
#Sommer #Sonne Yeah es ist endlich so weit

Ich möchte gerne diese Spalte so ändern, dass ich bspw. kriege:

\U0001f2678 ; \U0001f1233 ; \U0001f2311 ; \u2019 ; # ; Anzahl #s ; Kommentar
0 ;1 ; 1 ; 1 ;#Sommer ; 1 ; Hallo Welt
1 ; 0 ; 0 ; 0 ; 0 ; 0 ; Es ist schön
0 ;0 ; 0 ;0 ;#Sommer #Sonne ; 2 ;Yeah es ist endlich so weit



Es gibt einige Muster z.B. die Unicodes "\U0001f*****", "\u****". Die Länge ist stets gleich für diese beiden Arten, wobei die * für variable Zahlen-und Buchstabenkombinationen stehen. Die Hashtags, wiederum enden stets mit einem Leerzeichen, jedoch ist ihre Länge variabel. Im Grunde will diese Muster ausschneiden, als Zählvariabel nehmen und die Kommentarspalte nur mit Texten bestehend haben.

Ich habe mir das Package stringr runtergeladen und etwas probiert, jedoch krieg ich das noch nicht hin. Ich bemüh mich hier gleich noch per R so ein Bsp. zu erstellen und es hier reinzustellen.
Bitte bedenkt, dass bzgl Datentransformierung und -Erstellung noch wenig gemacht habe. Deshalb freue ich mich über alles, also ob Tipps oder Lösungen sind.

Code: Alles auswählen

#install.packages("stringr")
library(stringr)

data <- data.frame( Kommentar=character())


data<- structure(list(Kommentar=c("\U0001f1233\U0001f2311Hallo Welt \u2019 #Sommer","\U0001f2678 Es ist schön","#Sommer #Sonne Yeah es ist endlich so weit"  )))
data


emojis1<- data   %>%
  str_extract_all("\\U0001f(.*?)") %>%
  str_sub(1, 11) %>%
  unique()

emojis1

jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Muster aus einer Stringspalte ausschneiden

Beitrag von jogo »

Hallo Z3r0,

willkommen im Forum!
Auf SO wurde ich mit folgender Suche fündig (was das Thema Emojis angeht):
https://stackoverflow.com/search?q=%5Br%5D+emojis

Gruß, Jörg
Z3r0
Beiträge: 2
Registriert: Sa Apr 20, 2019 2:14 pm

Re: Muster aus einer Stringspalte ausschneiden

Beitrag von Z3r0 »

Danke Jörg,

jedoch haben mir die Beiträge nicht zu meinem Problem weitergeholfen, da mein Ziel sich nicht wirklich mit denen aus dem Forum abdeckt.

Da ich noch bei einigen Sachen in R Probleme habe, würde ich mal zunächst ein paar Ideen geben wie ich es theoretisch angehen würde, wenn ich die Befehle kennen würde (bin auch sehr dankbar, wenn das hier mit mir erarbeitet wird, aber gegen Lösungen habe ich auch nichts ;) ):
Im Grunde besteht meine Datei aus mehreren Spalten, wobei die Kommentarspalte diejenige ist, die mich stört und in mehrere andere transformiert werden soll. Ich hätte zunächst mal eine Datei erstellt, die alle Informationen enthält, die ich rauschneiden bzw. zählen möchte.
Z.B. für die "\U......." Smileys, das hier

Code: Alles auswählen

emojis1<- data   %>%
  str_extract_all("\\U0001f(.*?)") %>%
  str_sub(1, 11) %>%
  unique()

emojis1
Analog für die Smileys "\u....", dabei würde ich gerne für alle Smileys (oder vllt nur die Top 20 etc.) jeweils eine Spalte haben, die enthält wie oft dieser spezifische Smiley in dem Kommentar in der jeweiligen Zeile auftaucht. Das könnte man mittels Schleife machen wo man

Code: Alles auswählen

emojis1[i]
nutzt.

Ich weiß nicht, ob das so geht wie gedacht, da manche Smileys kein Leerzeichen dazwischen haben, manche schon. Zudem wie würde das bei Hashtags funktionieren, da diese unterschiedlich lang sind, aber durch ein Leerzeichen getrennt werden.

Danach würde ich gerne alle Smileys, Hashtags etc. aus der Kommentarspalte entfernen bzw. eine neue Spalte erstellen, die nur den Text enthält, damit ich die Wörter zählen kann

Code: Alles auswählen

str_count(data$Text, boundary("word"))
Antworten