2016-04-07 4 views
0


Ich habe einen Datenrahmen (dat) mit 96 Beobachtungen und 9 Variablen.
Mit den Werten von 9. Variable (Knockdown_percent), versuche ich eine Punktzahl zwischen 0 zuweisen - 10.
Score Tabelle:
Bewertung basierend auf Prozentbereich in Funktion zuweisen in R

Score: percent_range 
10: >95 
9: 85 to 95 
8: 75 to 85 
7: 70 to 75 
6: 60 to 69 
5: 50 to 59 
4: 40 to 49 
3: 30 to 39 
2: 20 to 29 
1: 10 to 19 
0: < 9 

Zum Beispiel, wenn die knockdown_percent < 9, score: 0; 10 bis 19 Punkte: 1; 20 bis 29 Punkte 2 und so weiter ...

Ich versuche, dies in R zu tun und ein paar Fragen zu haben:
a) Kann ich Hilfe beim Schreiben einer Funktionen für die obige Berechnung bekommen.
b) Gibt es eine eingebaute Funktion, um das Gleiche in R
b) Wie ich die neue Scores-Spalte an den vorhandenen Datenrahmen (dat) als 10. Variable anhängen kann.

Unten zeige ich den Teil des Datenrahmens.

X.S_No Sequence Pos GCper qPCR1 qPCR2 Avg_qPCR SD_qPCR Knockdown_percent 
1 1_1 TACATG  149 53 0.856 0.856 0.856 0.000    14.4 
2 1_2 GAGGAT  116 58 0.686 0.710 0.698 0.017    30.2 
3 1_3 CAGTTC  5 53 0.452 0.662 0.557 0.148    44.3 

Beispielcode:

compute_score <- function (x){ 
    n <- length(x) 
    score <- 0 
    for (i in 1:n){ 
    if (!is.na(x[i] <= 9 & x[i] >= 0)){ 
     score <- score + 0 
    } 
    else if (!is.na(x[i] >= 10 & x[i] <= 19)){ 
     score <- score + 1 
    } 
    return (score) 
    } 
} 
compute_score(dat[,"Knockdown_percent"]) 

gewünschte Ausgabe:

X.S_No Sequence Pos GCper qPCR1 qPCR2 Avg_qPCR SD_qPCR Knockdown_percent Score 
    1 1_1 TACATG  149 53 0.856 0.856 0.856 0.000    14.4 1 
    2 1_2 GAGGAT  116 58 0.686 0.710 0.698 0.017    30.2 3 
    3 1_3 CAGTTC  5 53 0.452 0.662 0.557 0.148    44.3 4 

Jede Hilfe wird sehr geschätzt.
Danke!

+0

Schauen Sie sich die 'cut' Funktion arbeiten. Es wird Faktorstufen basierend auf einer kontinuierlichen Variablen erstellen. Es kann nützlich sein, um Rangwerte zu erstellen. –

Antwort

0

Folgendes sollte

breaks <- c(seq(0, 70, by = 10), 75, 85, 95, 100) 
as.numeric(cut(dat$Knockdown_percent, breaks, right = FALSE)) - 1 
+0

Großartig!
Danke @Tad Dallas und Patrick Li für Ihre Vorschläge.
Es hat funktioniert :) – rkg