einzelne Buchstaben zählen aus Tabelle mit Wörtern

Allgemeine Fragen zur Programmierung mit R.

einzelne Buchstaben zählen aus Tabelle mit Wörtern

Beitragvon Gertrut » Do 6. Dez 2018, 13:47

Hallo liebe Forum Gemeinde,

ich habe eine Tabelle mit vielen einzelnen Wörtern (ein Wort pro Zeile) erfolgreich in RStudio importieren können.

Ich möchte nun die Häufigkeit, z.B. des Buchstaben "y" aus allen Wörtern der Tabelle zählen lassen und mir die Gesamtzahl angeben lassen.


Bin noch sehr neu und habe es bis jetzt nicht hinbekommen & wäre über Hilfe sehr dankbar.


Viele liebe Grüße

Gertrut
Gertrut
 
Beiträge: 11
Registriert: Mi 24. Okt 2018, 17:36
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: einzelne Buchstaben zählen aus Tabelle mit Wörtern

Beitragvon jogo » Fr 7. Dez 2018, 09:37

Hallo Gertrut,

Gertrut hat geschrieben:ich habe eine Tabelle mit vielen einzelnen Wörtern (ein Wort pro Zeile) erfolgreich in RStudio importieren können.

dann zeig uns doch bitte die Struktur des Dataframes, also das Ergebnis von
Code: Alles auswählen
str(DeinDataframe)


Gruß, Jörg
jogo
 
Beiträge: 157
Registriert: Mo 26. Feb 2018, 09:56
Danke gegeben: 3
Danke bekommen: 1 mal in 1 Post

Re: einzelne Buchstaben zählen aus Tabelle mit Wörtern

Beitragvon Gertrut » So 9. Dez 2018, 15:14

Hallo,

also wenn ich str(mein.data.frame) in die Konsole eingebe, kommt als Ergebnis folgendes:



'data.frame': 237272 obs. of 2 variables:
$ V1: int 0 0 0 0 0 0 0 0 0 0 ...
$ V2: Factor w/ 237272 levels "Aachen","Aachener",..: 1 2 3 4 5 6 7 8 9 10 ...
>
Gertrut
 
Beiträge: 11
Registriert: Mi 24. Okt 2018, 17:36
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: einzelne Buchstaben zählen aus Tabelle mit Wörtern

Beitragvon jogo » Mo 10. Dez 2018, 10:40

Hallo Gertrut,

da V2 ein Faktor ist, sollte man erst in character umwandeln:
Code: Alles auswählen
nchar(as.character(mein.data.frame$V2))

Du kannst es auch mal ohne die Umwandlung versuchen, denn die Funktion nchar() möchte als erstes Argument einen character-Vektor (siehe Hilfetext der Funktion), so dass die Umwandlung eventuell implizit erfolgt:
Code: Alles auswählen
nchar(mein.data.frame$V2)

Die Umwandlung von Zeichenketten in Faktoren kann man beim Einlesen verhindern:
Code: Alles auswählen
read.table( ..., stringsAsFactors = FALSE)


Gruß, Jörg
jogo
 
Beiträge: 157
Registriert: Mo 26. Feb 2018, 09:56
Danke gegeben: 3
Danke bekommen: 1 mal in 1 Post

Re: einzelne Buchstaben zählen aus Tabelle mit Wörtern

Beitragvon Gertrut » Mo 10. Dez 2018, 12:15

Guten Tag Jörg,

wenn man direkt über die Funktion nchar() operiert, dann erscheint die Fehlermeldung, nchar() benötige einen Zeichenkettenvektor. Also funktioniert die Umwandlung so wahrscheinlich nicht direkt.

Nachdem ich

nchar(as.character(mein.data.frame$V2))

eingegeben hatte und mir danach

class(mein.data.frame$V2)

anzeigen lassen habe, war V2 immernoch ein Fakor als Datentyp !?



Hat die Umwandlung dann trotzdem geklappt?



P.S.: Die Funktion nchar() zählt doch aber lediglich die Anzahl an meinetwegen Buchstaben pro Wort richtig?
Dabei geht jedoch leider die Information verloren, ein welcher Buchstabe wie oft im jeweiligen Wort - oder besser im ganzen Datensatz auftaucht...
Ich möchte sozusagen wissen, ob der Buchstabe "y" als Beispiel häufiger vorkommt als der Buchstabe "x" bzw. wie oft er generell vorkommt.


Vielen Dank für die Hilfe,

Grüße, Gertrut
Gertrut
 
Beiträge: 11
Registriert: Mi 24. Okt 2018, 17:36
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: einzelne Buchstaben zählen aus Tabelle mit Wörtern

Beitragvon jogo » Mo 10. Dez 2018, 15:27

Gertrut hat geschrieben:Guten Tag Jörg,

wenn man direkt über die Funktion nchar() operiert, dann erscheint die Fehlermeldung, nchar() benötige einen Zeichenkettenvektor. Also funktioniert die Umwandlung so wahrscheinlich nicht direkt.
jepp, sieht ganz so aus.

Nachdem ich nchar(as.character(mein.data.frame$V2))
eingegeben hatte und mir danach
class(mein.data.frame$V2)
anzeigen lassen habe, war V2 immernoch ein Fakor als Datentyp !?

Hat die Umwandlung dann trotzdem geklappt?
na klar hat die Umwandlung geklappt; nur wurde das Ergebnis nirgends gespeichert:
Code: Alles auswählen
mein.data.frame$V2anz <- nchar(as.character(mein.data.frame$V2))


P.S.: Die Funktion nchar() zählt doch aber lediglich die Anzahl an meinetwegen Buchstaben pro Wort richtig?
Dabei geht jedoch leider die Information verloren, ein welcher Buchstabe wie oft im jeweiligen Wort - oder besser im ganzen Datensatz auftaucht...
Ich möchte sozusagen wissen, ob der Buchstabe "y" als Beispiel häufiger vorkommt als der Buchstabe "x" bzw. wie oft er generell vorkommt.
hmm, also eher sowas:
Code: Alles auswählen
x <- "ein etwas längerer Satz, den ich hier nur so als Beispiel stehen habe, weil mir nichts Besseres eingefallen ist"
table(strsplit(x, ''))

Gruß, Jörg
jogo
 
Beiträge: 157
Registriert: Mo 26. Feb 2018, 09:56
Danke gegeben: 3
Danke bekommen: 1 mal in 1 Post

Re: einzelne Buchstaben zählen aus Tabelle mit Wörtern

Beitragvon Gertrut » Mo 10. Dez 2018, 19:50

Guten Abend,

also die Funktion table(strsplit()) scheint mir schonmal das zu sein, was ich benötige, vielen Dank.

Ich habe mittlerweile meine Zielvariable in den Datentyp chr, also character, umgewandelt und nun folgendes eingegeben in die Konsole:

table(strsplit(mein.data.frame$V2, ""))



als Fehlermeldung erscheint nun:

Fehler in table(str.....))
alle Argumente müssen die selbe Länge haben


Wenn ich jedoch so wie du geschrieben hattest, einen normalen Satz durchchecken lasse, der ja auch aus unterschiedlich langen Wörtern besteht, bekomme ich eine richtige Ausgabe ohne Fehler.


Vielen °Dank
Gertrut
 
Beiträge: 11
Registriert: Mi 24. Okt 2018, 17:36
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: einzelne Buchstaben zählen aus Tabelle mit Wörtern

Beitragvon jogo » Mo 10. Dez 2018, 21:10

Hallo Gertrud,

Gertrut hat geschrieben:also die Funktion table(strsplit()) scheint mir schonmal das zu sein, was ich benötige, vielen Dank.

Ich habe mittlerweile meine Zielvariable in den Datentyp chr, also character, umgewandelt und nun folgendes eingegeben in die Konsole:
Code: Alles auswählen
table(strsplit(mein.data.frame$V2, ""))

als Fehlermeldung erscheint nun:
Fehler in table(str.....))
alle Argumente müssen die selbe Länge haben


Wenn ich jedoch so wie du geschrieben hattest, einen normalen Satz durchchecken lasse, der ja auch aus unterschiedlich langen Wörtern besteht, bekomme ich eine richtige Ausgabe ohne Fehler.
bedenke, dass es sich bei meinem Beispiel nur um eine einzelne Zeichenkette handelt.
Du möchtest jedoch einen ganzen character-Vektor bearbeiten. Somit kommt jetzt die entscheidende Frage:
Was soll mit den Elementen des Vektors geschehen für die Auswertung. Möchtest Du jedes Element für sich auswerten, z.B.
Code: Alles auswählen
lapply(mein.data.frame$V2, Funktion(x) table(strsplit(x, "")))

Oder sollen alle Elemente zusammengefügt werden und danach erfolgt die Zählung der Buchstaben?
Code: Alles auswählen
table(strsplit(paste0(mein.data.frame$V2, collapse=''), ""))
:?:

Gruß, Jörg
jogo
 
Beiträge: 157
Registriert: Mo 26. Feb 2018, 09:56
Danke gegeben: 3
Danke bekommen: 1 mal in 1 Post

Re: einzelne Buchstaben zählen aus Tabelle mit Wörtern

Beitragvon Gertrut » Do 13. Dez 2018, 20:47

Guten Abend,

die Variante mit :
table(strsplit(paste0(mein.data.frame$V2, collapse=''), ""))

liefert genau das, was ich wollte, mit teils überraschenden Erkenntnissen, vielen Dank dafür :-)

Viele liebe Grüße,

Gertrut
Gertrut
 
Beiträge: 11
Registriert: Mi 24. Okt 2018, 17:36
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post


Zurück zu Programmierung allgemein

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron