2017-07-05 5 views
0

Ich habe ein datasetFehlermeldungen kombiniert group_by und as.numeric in R

Gene Sample Ctmean 

Chr1 0.0032 38.30534 

Chr1 0.016 38.05460 

Chr2 0.0032 34.96991 

und so weiter, wobei die Probennamen „Probe“ wurden zunächst als Zeichen definiert (einige sind Namen, einige Zahlen). Ich habe nur diejenigen gefiltert, die Zahlen sind, also kann ich diese für eine Analyse verwenden, mit den genannten für spätere separate Analyse, aber wenn ich versuche, sie durch eine andere Spalte für diese Analyse zu gruppieren, stoße ich auf die Fehlermeldung

Fehler in function_list [k]: (Liste) Objekt kann nicht auf den Typ 'double'

nach der Verwendung von

group_by(forstandardcurve,Gene) %>% as.numeric(forstandardcurve$Sample) 

Umgekehrt, wenn ich

verwenden dazu gezwungen werden
as.numeric(forstandardcurve$Sample) %>% group_by(forstandardcurve,Gene) 

ich

Fehler in UseMethod ("group_by_"): keine anwendbare Methode für 'group_by_' auf ein Objekt der Klasse angewendet> "c ('double', 'numerisch')"

obwohl die Spalte "Gene" immer noch "character" sein sollte. Jeder Befehl sieht so aus, als würde er funktionieren, wenn ich ihn selbst ausführe. Ich bin sehr neu zu R, tut mir leid, wenn dies ein grundlegender Fehler ist, den ich gemacht habe - wie kann ich das beheben, damit ich die Zahlen in "Sample" verwenden kann, mit separaten Gleichungen für jede Gruppe in der Spalte "Gene" ?

Antwort

0

Sie versuchen, in Ihrem Beispiel class als eigenständigen Befehl zu konvertieren, aber es macht mehr Sinn, class in dem Kontext eines anderen R-Verbs zu konvertieren. Angenommen, Sie möchten den Mittelwert Sample gruppiert nach Gene berechnen.

Beginnend mit Ihren Daten, wo Sample ein Zeichen:

df <- data.frame(Gene = c("Chr1","Chr1","Chr2"), 
       Sample = c("0.0032","0.016","0.0032"), 
       Ctmean = c(38.3, 38.0, 34.9)) 

Sie tun können:

df %>% 
    group_by(Gene) %>% 
    summarise(Sample = mean(as.numeric(as.character(Sample)))) 

Bitte beachte, dass ich factor-character zuerst ändern musste, bevor sie numeric cnverting. Dies ergibt:

1 Chr1 0.0096 
2 Chr2 0.0032 
+0

Das hat geklappt hat das erste Mal, dass ich es in diesem Skript verwendet haben (vor dem oben hatte ich 'qpcrmeans <- wählen (qPCR, Ct, Probe, Gene)%>% group_by (Gen, Probe)%>% zusammenfassen (Ctmean = Mittelwert (Ct)) Forwardardcurve <- Filter (qpcrmeans, grepl ("4 | 0.8 | 0.016 | 0.0032", Probe))%>% filter (! Is.na (Ctmean)) '). Aber funktioniert später nicht, liegt das vielleicht daran, dass es schon gruppiert ist? Ich kann jetzt mit str() sehen, dass die Datei, auf der das funktioniert hat, ein data.frame ist, während das, was nicht funktioniert, grupped_df sagt. – Sophie

+0

Höchstwahrscheinlich ... können Sie die Gruppierung aufheben, indem Sie '%>% ungroup()' an den Rest ketten – CPak

+0

Perfekt, Upvoting für den Kommentar auch. – Sophie

Verwandte Themen