Ungewollte Zeichen in Daten

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

Moderatoren: EDi, jogo

MarcticFox

Ungewollte Zeichen in Daten

Beitrag von MarcticFox »

Hallo!
Ich habe meine Daten als dataframe eingeladen aber hinter jedem Wert schleicht sich ein "c2" ein, mal mit . oder <> davor/dahinter, und ich habe keine Ahnung wieso. Kann mir da jemand helfen? Foto als Beispiel für mein Problem ist im Anhang.
Liebe Grüße,
MarcticFox
Dateianhänge
Problem_Rstudio.PNG
Problem_Rstudio.PNG (7.71 KiB) 779 mal betrachtet
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Ungewollte Zeichen in Daten

Beitrag von jogo »

Hallo MarcticFox,

willkommen im Forum!
MarcticFox hat geschrieben: Mi Apr 18, 2018 2:21 pm Hallo!
Ich habe meine Daten als dataframe eingeladen aber hinter jedem Wert schleicht sich ein "c2" ein, mal mit . oder <> davor/dahinter, und ich habe keine Ahnung wieso.
Kannst Du bitte zeigen, wie (mit welchem Code) Du die Daten eingelesen hast?
Vielleicht kannst Du auch die Textdatei (oder die ersten Zeilen davon) liefern, aus der Du die Daten gelesen hast.
Meiner Meinung nach, sollte das Problem gleich beim Einlesen behandelt werden (evtl. sep= anders setzen).

Gruß, Jörg
MarcticFox

Re: Ungewollte Zeichen in Daten

Beitrag von MarcticFox »

Hallo Jörg!
Na klar!Code war folgender:

dat1 <- read.table("Rohdaten/MA_EisfuchsData20180416_0851.txt",skip = 1, sep="§", header = T, encoding="UTF-8", stringsAsFactors = T)

Und die Rohdaten sehen wie folgt aus:

### Aufzeichnung mit Entwicklerversion: Neuer Erfassungsmodus ### Aufzeichnung vom 16.04.2018 08:51:38§Benutzer Maren§Beobachterposition(Prozent) 73,6/25,900000000000006§Beobachterposition(Skaliert) 28262,4/9945,6§Projektdatei /sdcard1/Eisfuchs.obs§Erfassungsmodus 0
Datum§Uhrzeit§AktorId§AktorText§AktionId§AktionText§WetterId§WetterText§Anzahl Besucher§Skalierte Position X§Skalierte Position Y§Prozentuale Position X§Prozentuale Position Y§Skalierter Weg seit letzter Markierung§Sonneneinstrahlung§Temperatur§Luftfeuchtigkeit§Anzahl Interaktionspartner§InteraktionspartnerListeId§InteraktionspartnerListeText§Sequenznummer des Timers
16.04.2018§08:59:24§1§Faehe§3§liegt_draußen_mit§1§Sonnig§1§9945,6§10441,47§25,9§53,3§0§0§22§0§0§§§0
16.04.2018§08:59:31§2§Ruede§4§ist aufmerksam§1§Sonnig§1§22579,2§7013,22§58,8§35,8§0§0§22§0§0§§§0
16.04.2018§09:03:17§2§Ruede§2§liegt_kl_Box_mit§1§Sonnig§1§22963,2§7718,46§59,8§39,4§803,01§0§22§0§0§§§0

Liebe Grüße!
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Ungewollte Zeichen in Daten

Beitrag von bigben »

Das ist in R-Studio reproduzierbar:

Code: Alles auswählen

dat1 <- read.table(skip = 1, sep="§", header = T, encoding="UTF-8", stringsAsFactors = T,
                   text ="### Aufzeichnung mit Entwicklerversion: Neuer Erfassungsmodus ### Aufzeichnung vom 16.04.2018 08:51:38§Benutzer Maren§Beobachterposition(Prozent) 73,6/25,900000000000006§Beobachterposition(Skaliert) 28262,4/9945,6§Projektdatei /sdcard1/Eisfuchs.obs§Erfassungsmodus 0
  Datum§Uhrzeit§AktorId§AktorText§AktionId§AktionText§WetterId§WetterText§Anzahl Besucher§Skalierte Position X§Skalierte Position Y§Prozentuale Position X§Prozentuale Position Y§Skalierter Weg seit letzter Markierung§Sonneneinstrahlung§Temperatur§Luftfeuchtigkeit§Anzahl Interaktionspartner§InteraktionspartnerListeId§InteraktionspartnerListeText§Sequenznummer des Timers
16.04.2018§08:59:24§1§Faehe§3§liegt_draußen_mit§1§Sonnig§1§9945,6§10441,47§25,9§53,3§0§0§22§0§0§§§0
16.04.2018§08:59:31§2§Ruede§4§ist aufmerksam§1§Sonnig§1§22579,2§7013,22§58,8§35,8§0§0§22§0§0§§§0
16.04.2018§09:03:17§2§Ruede§2§liegt_kl_Box_mit§1§Sonnig§1§22963,2§7718,46§59,8§39,4§803,01§0§22§0§0§§§0")

View(dat1)

Code: Alles auswählen

> str(dat1)
'data.frame':	3 obs. of  21 variables:
 $ Datum.c2.                                 : Factor w/ 1 level "16.04.2018\xc2": 1 1 1
 $ Uhrzeit.c2.                               : Factor w/ 3 levels "08:59:24\xc2",..: 1 2 3
 $ AktorId.c2.                               : Factor w/ 2 levels "1\xc2","2\xc2": 1 2 2
 $ AktorText.c2.                             : Factor w/ 2 levels "Faehe\xc2","Ruede\xc2": 1 2 2
 $ AktionId.c2.                              : Factor w/ 3 levels "2\xc2","3\xc2",..: 2 3 1
 $ AktionText.c2.                            : Factor w/ 3 levels "ist aufmerksam\xc2",..: 2 1 3
 $ WetterId.c2.                              : Factor w/ 1 level "1\xc2": 1 1 1
 $ WetterText.c2.                            : Factor w/ 1 level "Sonnig\xc2": 1 1 1
 $ Anzahl.Besucher.c2.                       : Factor w/ 1 level "1\xc2": 1 1 1
 $ Skalierte.Position.X.c2.                  : Factor w/ 3 levels "22579,2\xc2",..: 3 1 2
 $ Skalierte.Position.Y.c2.                  : Factor w/ 3 levels "10441,47\xc2",..: 1 2 3
 $ Prozentuale.Position.X.c2.                : Factor w/ 3 levels "25,9\xc2","58,8\xc2",..: 1 2 3
 $ Prozentuale.Position.Y.c2.                : Factor w/ 3 levels "35,8\xc2","39,4\xc2",..: 3 1 2
 $ Skalierter.Weg.seit.letzter.Markierung.c2.: Factor w/ 2 levels "0\xc2","803,01\xc2": 1 1 2
 $ Sonneneinstrahlung.c2.                    : Factor w/ 1 level "0\xc2": 1 1 1
 $ Temperatur.c2.                            : Factor w/ 1 level "22\xc2": 1 1 1
 $ Luftfeuchtigkeit.c2.                      : Factor w/ 1 level "0\xc2": 1 1 1
 $ Anzahl.Interaktionspartner.c2.            : Factor w/ 1 level "0\xc2": 1 1 1
 $ InteraktionspartnerListeId.c2.            : Factor w/ 1 level "\xc2": 1 1 1
 $ InteraktionspartnerListeText.c2.          : Factor w/ 1 level "\xc2": 1 1 1
 $ Sequenznummer.des.Timers                  : int  0 0 0
Hat bestimmt irgendwas mit dem Encoding zu tun.

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Ungewollte Zeichen in Daten

Beitrag von jogo »

Ich bin jetzt soweit gekommen:

Code: Alles auswählen

text ="### Aufzeichnung mit Entwicklerversion: Neuer Erfassungsmodus ### Aufzeichnung vom 16.04.2018 08:51:38§Benutzer Maren§Beobachterposition(Prozent) 73,6/25,900000000000006§Beobachterposition(Skaliert) 28262,4/9945,6§Projektdatei /sdcard1/Eisfuchs.obs§Erfassungsmodus 0
                   Datum§Uhrzeit§AktorId§AktorText§AktionId§AktionText§WetterId§WetterText§Anzahl Besucher§Skalierte Position X§Skalierte Position Y§Prozentuale Position X§Prozentuale Position Y§Skalierter Weg seit letzter Markierung§Sonneneinstrahlung§Temperatur§Luftfeuchtigkeit§Anzahl Interaktionspartner§InteraktionspartnerListeId§InteraktionspartnerListeText§Sequenznummer des Timers
                   16.04.2018§08:59:24§1§Faehe§3§liegt_draußen_mit§1§Sonnig§1§9945,6§10441,47§25,9§53,3§0§0§22§0§0§§§0
                   16.04.2018§08:59:31§2§Ruede§4§ist aufmerksam§1§Sonnig§1§22579,2§7013,22§58,8§35,8§0§0§22§0§0§§§0
                   16.04.2018§09:03:17§2§Ruede§2§liegt_kl_Box_mit§1§Sonnig§1§22963,2§7718,46§59,8§39,4§803,01§0§22§0§0§§§0"
##
d <- read.table(skip=1, header=FALSE, stringsAsFactors = FALSE, sep="§", text=text)
d2 <- as.data.frame(lapply(d, sub, pattern="..$", replace=""), stringsAsFactors = FALSE)
d3 <- read.table(text=t(apply(d2, 1, paste0, collapse=";")), 
        header=TRUE, sep=";", dec=",", stringsAsFactors = FALSE, strip.white = TRUE)
str(d3)
Das ist leicht brutal, weil ich einfach zwei Zeichen am Ende jedes Feldes lösche.
Das Ergebnis sieht einigermaßen aus.
Darf ich fragen, welches Programm einen solchen Output erzeugt?

Nachtrag:
Ich habe festgestellt, dass die komischen Zeichen auch verloren gehen können, wenn man den Text zwischen verschiedenen Programmen hin- und herkopiert. Deshalb wäre es für die Reproduzierbarkeit des Effektes wichtig, die entsprechende Datei als Anhang oder einen Link zu einem Download zu haben.

Gruß, Jörg
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Ungewollte Zeichen in Daten

Beitrag von EDi »

Hat bestimmt irgendwas mit dem Encoding zu tun.
Mal latin-1 ausprobiert? Meine Windowszeit ist lange rum, aber ich meine mich zu erinnern...

Oder mal die Datei in einem gescheiten Editor öffnen und nachschauen / probieren.
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild.
MarcticFox

Re: Ungewollte Zeichen in Daten

Beitrag von MarcticFox »

Guten Abend ihr beiden!
latin-1 sagt mir nichts, ich bin auch eher Anfängerin ;)
Das ist eineselbstgeschriebene App aus einer AG der Uni, die mir sowas ausspuckt. Sonst konfrontiere ich die Schöpfer der App mal mit dem Problem, das ist ein recht kleiner Kreis. Bloß arbeiten die bei der Auswertung leider nicht mit R, sondern nur mit Excel...da scheint es keine Probleme zu geben mit unerwünschten Zeichen.

Was wäre denn ein gescheiter Editor, Deiner Meinung nach?
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Ungewollte Zeichen in Daten

Beitrag von bigben »

Hi,

wenn Excel kein Problem ist, dann lade die Dateien doch einmal mit Excel und speichere sie dort als *.csv wieder ab. Dann lädst Du das mit Excel als csv gespeicherte mit der Funktion read.csv2 wieder ein. Ist das elegant? Nein. Könnte das klappen? Versuch macht klug.
Sonst konfrontiere ich die Schöpfer der App mal mit dem Problem, das ist ein recht kleiner Kreis. Bloß arbeiten die bei der Auswertung leider nicht mit R, sondern nur mit Excel...da scheint es keine Probleme zu geben mit unerwünschten Zeichen
Das sieht ja auch ganz klar nach etwas aus, was man in R machen können sollte. :shock:

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Ungewollte Zeichen in Daten

Beitrag von jogo »

Hallo Polarfüchsin,

kannst Du bitte mal folgendes testen:

Code: Alles auswählen

Text <- readLines("Rohdaten/MA_EisfuchsData20180416_0851.txt")
dat1 <- read.table(text=gsub("..§", "§", Text), skip = 1, sep="§", dec=",", header=TRUE, stringsAsFactors=FALSE)
str(dat1)
und über das Ergebnis berichten?

Gruß, Jörg
MarcticFox

Re: Ungewollte Zeichen in Daten

Beitrag von MarcticFox »

Guten Abend! Hab ich getestet:

> rm(list=ls())
> setwd('C:/Users/(...))
> Text <- readLines("Rohdaten/MA_EisfuchsData20180416_0851.txt")
> dat1 <- read.table(text=gsub("..§", "§", Text), skip = 1, sep="§", dec=",", header=T, stringsAsFactors=F)
Error in scan(file = file, what = what, sep = sep, quote = quote, dec = dec, :
line 1 did not have 21 elements

...obwohl er doch Zeile 1 überspringen soll?
Antworten