2016-07-24 7 views
0

Ich habe einen Datenrahmen Rating mit zwei Spalten HospitalName, DeathRate_For_Hospital. Es sieht aus wieSortieren von Dezimaldaten funktioniert nicht richtig

HospitalName DeathRate_For_Hospital 
    MGM Hospital      9.8      
    HNK Hospital      10.1 
Hopkins Hospital      8.3 
    Arr Medicals      10.0 
      .       . 
      .       . 

Alles was ich brauche ist das Krankenhaus Namen bekommen mit mindestens DeathRate_For_Hospital, so bestelle ich die DeathRate_for_Hospital wie:

Rating <- Rating[order(round(as.numeric(Rating$ DeathRate_For_Hospital))),] 
head(Rating,1) 

Obwohl ich in aufsteigender Reihenfolge umgewandelt, ich weiß nicht, warum Es klappt.

Das funktioniert gut, wenn ich nur numerische Werte habe. Aber wenn ihre Werte schweben, funktioniert sort nicht.

Dank

+0

@ZheyuanLi, Ordnung arbeitet, wenn die Spalte, um die Zahlenwerte hat, wenn die Spalte die schwebenden Werte wie 9.35,10.1,8.3..etc hat dann, um nicht richtig funktioniert . –

+1

@ ZheyuanLi, es ist Faktor. Ich meine die zwei Spalten, die es hat, ist Faktor und Faktor. –

Antwort

2

Alles was ich brauche ist das Krankenhaus Namen mit dem geringsten DeathRate_For_Hospital

Wenn with(Rating, class(DeathRate_For_Hospital)) ist "numerisch" zu erhalten, müssen Sie nur:

with(Rating, HospitalName[order(DeathRate_For_Hospital)])[1] 

Aber da es gibt dir "faktor", du brauchst:

with(Rating, HospitalName[order(as.numeric(as.character(DeathRate_For_Hospital)))])[1] 

oder effizienter:

numbers <- as.numeric(levels(DeathRate_For_Hospital)) 
with(Rating, HospitalName[order(numbers[DeathRate_For_Hospital])])[1] 
+0

Vielen Dank –