Manche Daten (Spalten) werden nicht erkannt

Allgemeine Statistik mit R, die Test-Methode ist noch nicht bekannt, ich habe noch keinen Plan!

Moderatoren: EDi, jogo

Antworten
KiKu

Manche Daten (Spalten) werden nicht erkannt

Beitrag von KiKu »

Hallo:-) ich schreiben gerade an meiner Promotion (Medizin) und stecke total fest (leider bin ich Computer-Technisch generell nicht so sehr bewandet)

Zu meiner Studie:
Es geht darum, 2 Gruppen von Patienten zu untersuchen. Beide Gruppen erhalten verschiedene Messungen. Alle Ergebnisse habe ich in einer Excel Tabelle aufgeführt. In der ersten Zeile stehen die Bezeichnungen (jeweils eine Spalte Gruppe A und eine Spalte Gruppe B) und darunter folgen die Werte. Teilweise handelt es sich um ganze Zahlen, manchmal sind es aber auch Dezimalzahlen oder negative Werte. Anfangs hatte ich noch NA bei den Ergebnissen stehen, bei denen die Messung nicht durchgeführt werden konnte aber ich habe alle NAs entfernt und somit befinden sich außer den Überschriften in Zeile 1 nur Zahlen (in Excel als "Standard" formatiert).
Für meine Arbeit benötige ich die Verteilung der Werte innerhalb jeder Gruppe (Normalverteilung; 25 und 75% Perzentile; Min und Max; Standardabweichhung, Median.....) und dann die Korrelation von verschiedenen Messergebnissen sowie die Auswertung ob die Daten signifikant sind.

Meine Wertetabelle habe ich als csv abgespeichert.
Wenn ich R öffne, lade ich mit:Daten<-read.table(file.choose(),header=T,sep=";",dec=".") den Datensatz. Gucke ich mir diesen mit str(Daten) an, wird mir angezeigt, dass manche Werte als: "int" bezeichnet werden und andere als "factor".
Die Dezimalzahlen sind in der Tabelle mit einem Komma getrennt, habe auch schon den Befelh: as.numeric() oder dec"," eingegeben aber das hat auch nix gebracht. Möchte ich nämlich mit den Daten arbeiten, zum Beispiel einen einfachen Mittelwert berechnen, kommt immer: argument is not numeric or logical: returning NA
Vermutlich ist meine Frage lächerlich aber ich weiß mir nicht zu helfen:-(

Und wie kann ich den KS-Test zur Prüfung der Normalverteilung anwenden?
Wie berechne ich die 25% und 75% Perzentile sowie die Korrelation 2er Parameter?

Ich wäre echt unheimlich über eure Hilfe dankbar!!!!
Ich wünsche euch allen Frohe Ostern,
LG Kira
jogo
Beiträge: 2086
Registriert: Fr Okt 07, 2016 8:25 am

Re: Manche Daten (Spalten) werden nicht erkannt

Beitrag von jogo »

Hallo Kira,

willkommen im Forum!
KiKu hat geschrieben: Fr Apr 14, 2017 10:22 pmDie Dezimalzahlen sind in der Tabelle mit einem Komma getrennt, habe auch schon den Befehl: as.numeric() oder dec"," eingegeben aber das hat auch nix gebracht. Möchte ich nämlich mit den Daten arbeiten, zum Beispiel einen einfachen Mittelwert berechnen, kommt immer: argument is not numeric or logical: returning NA
Vermutlich ist meine Frage lächerlich aber ich weiß mir nicht zu helfen:-(
nein, lächerlich ist die Frage ganz und gar nicht. Das Einlesen der Daten ist immer eine kritische Stelle. Da Du schreibst, dass bei Dir die Dezimalen mit Komma abgetrennt sind, ist dec"," eigentlich schon richtig. Da das aber nicht geholfen hat, muss der Fehler an anderer Stelle liegen. Irgendwo in der CSV-Datei ist ein Zeichen versteckt, was immer noch nicht zu den numerischen Werten passt - das die Umwandlung verhindert.
Leider kann man auch nicht sofort die Umwandlung

Code: Alles auswählen

as.numeric(as.character(...))
durchführen, weil vorher die Kommas in Dezimalpunkte umgewandelt werden müssen.
Dann kann man vorher aber auch gleich mit

Code: Alles auswählen

Daten<-read.table(file.choose(),header=T,sep=";",dec=",", stringsAsFactors=FALSE)
einlesen.
und dann mit Daten$Spalte <- sub(",", ".", Daten$Spalte) das Komma umtauschen, Beispiel:

Code: Alles auswählen

sub(",", ".", "3,1415")
Bei den Stellen, wo anschließend die Umwandlung nach numerisch NAs erzeugt, muss man gucken, also:

Code: Alles auswählen

Daten<-read.table(file.choose(),header=T,sep=";",dec=",", stringsAsFactors=FALSE)
Daten$Spalte <- sub(",", ".", Daten$Spalte)
d <- data.frame(s=Daten$Spalte, n=as.numeric(Daten$Spalte))
d[is.na(d$n),]  # siehst Du was? ...
notfalls muss man mit einem Editor in der CSV-Datei rumwerkeln.

Code: Alles auswählen

Und wie kann ich den KS-Test zur Prüfung der Normalverteilung anwenden?
Wie berechne ich die 25% und 75% Perzentile sowie die Korrelation 2er Parameter?
Das machen wir dann nach dem Einlesen.
Schau schon mal nach summary() und

Code: Alles auswählen

fivenum()
Gruß, Jörg
KiKu

Re: Manche Daten (Spalten) werden nicht erkannt

Beitrag von KiKu »

Oh wow tausend Dank für die ausführliche und schnelle Antwort!!!!
Also ich das eingegeben: Daten<-read.table(file.choose(),header=T,sep=";",dec=",", stringsAsFactors=FALSE)
und siehe da, meine Werte sind jetzt: "int" oder "num".
Gebe ich jetzt aber zum Beispiel: mean(x1) ein (habe die einzelnen Spalten Vektoren zugeordnet damit es übersichtlicher ist) kommt das dabei raus:
In mean.default(x1) : argument is not numeric or logical: returning NA
jogo
Beiträge: 2086
Registriert: Fr Okt 07, 2016 8:25 am

Re: Manche Daten (Spalten) werden nicht erkannt

Beitrag von jogo »

Zeig doch bitte mal das Ergebnis von

Code: Alles auswählen

str(Daten)
KiKu

Re: Manche Daten (Spalten) werden nicht erkannt

Beitrag von KiKu »

Ich hoffe man kann das erkennen...[attachment=0]Dok1.pdf
Dateianhänge
Dok1.pdf
(244.09 KiB) 225-mal heruntergeladen
jogo
Beiträge: 2086
Registriert: Fr Okt 07, 2016 8:25 am

Re: Manche Daten (Spalten) werden nicht erkannt

Beitrag von jogo »

Hm, ich kann das x1 dort gar nicht sehen. was ist denn x1 für ein Objekt? ... etwa ein Dataframe?
Ein Dataframe ist eine Liste - also kein numerischer Vektor - auch nicht wenn alle Spalten numerische Vektoren sind. Beispiel:

Code: Alles auswählen

BOD
str(BOD)
mean(BOD)
mean(BOD$demand)
Gruß, Jörg
jogo
Beiträge: 2086
Registriert: Fr Okt 07, 2016 8:25 am

Re: Manche Daten (Spalten) werden nicht erkannt

Beitrag von jogo »

Ich möchte hier kurz die Auflösung des Rätsels verraten, weil es durchaus wichtig sein kann für andere, bei denen dieses Problem auftaucht. Das Problem waren Spaltennamen der Art:

Code: Alles auswählen

OCT_Cup_Area_.mmý._FG
Das ist jetzt schon das, was R daraus beim Einlesen gemacht hat.
Ursprünglich waren die Texte in der CSV-Datei entsprechend Codepage 437 abgelegt, also OCT_Cup_Area_(mm²)_FG
Dann wurde versucht, die Spalten des Dataframes umzuspeichern:

Code: Alles auswählen

y2<-Daten$OCT_Cup_Area_.mm²._FG
Da dieser Spaltenname im Dataframe nicht gefunden wird, ist das Ergebnis EMPTY, so wie bei:

Code: Alles auswählen

y2 <- BOD$unbekannteSpalte
y2 # im Gegensatz zu 
BOD$demand
Das Fatale daran ist, dass R keine Meldung ausgibt bei y2 <- BOD$unbekannteSpalte
Jede weitere Verarbeitung der Daten erzeugt entsprechende Fehlermeldungen, z.B.

Code: Alles auswählen

summary(y2)
#> summary(y2)
#Length  Class   Mode 
#     0   NULL   NULL 
Gruß, Jörg
KiKu

Re: Manche Daten (Spalten) werden nicht erkannt

Beitrag von KiKu »

Ja, nach dieser tollen Hilfe hat wirklich alles funktioniert! Toll, dass es dieses Forum und so nette Menschen gibt :-)
Antworten