2017-10-06 140 views
0

我有一个数据帧如下排序一个数据帧基础上多列 - 排序问题

Provider.Number Hospital.Name State Mortality 
210001 MERITUS MEDICAL CENTER MD 12.5 
210002 UNIVERSITY OF MARYLAND MEDICAL CENTER MD 12.7 
210003 PRINCE GEORGES HOSPITAL CENTER MD 13 
210004 HOLY CROSS HOSPITAL MD 9.6 
210005 FREDERICK MEMORIAL HOSPITAL MD 9.8 
210006 HARFORD MEMORIAL HOSPITAL MD 11.5 
210007 SAINT JOSEPH MEDICAL CENTER MD 9.5 
210008 MERCY MEDICAL CENTER INC MD 11.2 
210009 JOHNS HOPKINS HOSPITAL, THE MD 10.2 
210011 SAINT AGNES HOSPITAL MD 11.1 
210012 SINAI HOSPITAL OF BALTIMORE MD 9.7 
210013 BON SECOURS HOSPITAL MD 9.6 
210015 MEDSTAR FRANKLIN SQUARE MEDICAL CENTER MD 9.3 
210016 WASHINGTON ADVENTIST HOSPITAL MD 11 
210017 GARRETT COUNTY MEMORIAL HOSPITAL MD 13.5 
210018 MEDSTAR MONTGOMERY MEDICAL CENTER MD 9.3 
210019 PENINSULA REGIONAL MEDICAL CENTER MD 10.6 
210022 SUBURBAN HOSPITAL MD 9.9 
210023 ANNE ARUNDEL MEDICAL CENTER MD 12 
210024 MEDSTAR UNION MEMORIAL HOSPITAL MD 11.3 
210027 WESTERN MARYLAND REGIONAL MEDICAL CENTER MD 12.6 
210028 MEDSTAR SAINT MARY'S HOSPITAL MD 13.1 
210029 JOHNS HOPKINS BAYVIEW MEDICAL CENTER MD 10.7 
210030 CHESTER RIVER HOSPITAL CENTER MD 11.2 
210032 UNION HOSPITAL OF CECIL COUNTY MD 9.9 
210033 CARROLL HOSPITAL CENTER MD 9.7 
210034 MEDSTAR HARBOR HOSPITAL MD 9.2 
210035 CIVISTA MEDICAL CENTER MD 14.2 
210037 MEMORIAL HOSPITAL AT EASTON MD 10.6 
210038 MARYLAND GENERAL HOSPITAL MD 10.8 
210039 CALVERT MEMORIAL HOSPITAL MD 10.1 
210040 NORTHWEST HOSPITAL CENTER MD 12.6 
210043 BALTIMORE WASHINGTON MEDICAL CENTER MD 12.7 
210044 GREATER BALTIMORE MEDICAL CENTER MD 7.4 
210045 EDWARD MCCREADY MEMORIAL HOSPITAL MD 12.9 
210048 HOWARD COUNTY GENERAL HOSPITAL MD 10.1 
210049 UPPER CHESAPEAKE MEDICAL CENTER MD 12.9 
210051 DOCTORS' COMMUNITY HOSPITAL MD 11 
210054 SOUTHERN MARYLAND HOSPITAL CENTER MD 11.7 
210055 LAUREL REGIONAL MEDICAL CENTER MD 10.6 
210056 MEDSTAR GOOD SAMARITAN HOSPITAL MD 8.4 
210057 SHADY GROVE ADVENTIST HOSPITAL MD 11.7 
210060 FORT WASHINGTON HOSPITAL MD 11 
210061 ATLANTIC GENERAL HOSPITAL MD 10.8 
21020F VA MARYLAND HEALTHCARE SYSTEM - BALTIMORE MD 12.6 

我想基于死亡率列和医院柱,然后按字母顺序来处理关系的DF排序。

我厌倦了使用不同的排序功能,如

sorted <- work[order(work$Mortality,work$Hosptial),] 

with(work, order(Mortality, Hospital)) 

但最后的结果排序是错误的。 我得到的输出是

Hosptial State Mortality 
CALVERT MEMORIAL HOSPITAL MD 10.1 
HOWARD COUNTY GENERAL HOSPITAL MD 10.1 
JOHNS HOPKINS HOSPITAL, THE MD 10.2 
LAUREL REGIONAL MEDICAL CENTER MD 10.6 
MEMORIAL HOSPITAL AT EASTON MD 10.6 
PENINSULA REGIONAL MEDICAL CENTER MD 10.6 
JOHNS HOPKINS BAYVIEW MEDICAL CENTER MD 10.7 
ATLANTIC GENERAL HOSPITAL MD 10.8 
MARYLAND GENERAL HOSPITAL MD 10.8 
DOCTORS' COMMUNITY HOSPITAL MD 11 
FORT WASHINGTON HOSPITAL MD 11 
WASHINGTON ADVENTIST HOSPITAL MD 11 
SAINT AGNES HOSPITAL MD 11.1 
CHESTER RIVER HOSPITAL CENTER MD 11.2 
MERCY MEDICAL CENTER INC MD 11.2 
MEDSTAR UNION MEMORIAL HOSPITAL MD 11.3 
HARFORD MEMORIAL HOSPITAL MD 11.5 
SHADY GROVE ADVENTIST HOSPITAL MD 11.7 
SOUTHERN MARYLAND HOSPITAL CENTER MD 11.7 
ANNE ARUNDEL MEDICAL CENTER MD 12 
MERITUS MEDICAL CENTER MD 12.5 
NORTHWEST HOSPITAL CENTER MD 12.6 
VA MARYLAND HEALTHCARE SYSTEM - BALTIMORE MD 12.6 
WESTERN MARYLAND REGIONAL MEDICAL CENTER MD 12.6 
BALTIMORE WASHINGTON MEDICAL CENTER MD 12.7 
UNIVERSITY OF MARYLAND MEDICAL CENTER MD 12.7 
EDWARD MCCREADY MEMORIAL HOSPITAL MD 12.9 
UPPER CHESAPEAKE MEDICAL CENTER MD 12.9 
PRINCE GEORGES HOSPITAL CENTER MD 13 
MEDSTAR SAINT MARY'S HOSPITAL MD 13.1 
GARRETT COUNTY MEMORIAL HOSPITAL MD 13.5 
CIVISTA MEDICAL CENTER MD 14.2 
GREATER BALTIMORE MEDICAL CENTER MD 7.4 
MEDSTAR GOOD SAMARITAN HOSPITAL MD 8.4 
MEDSTAR HARBOR HOSPITAL MD 9.2 
MEDSTAR FRANKLIN SQUARE MEDICAL CENTER MD 9.3 
MEDSTAR MONTGOMERY MEDICAL CENTER MD 9.3 
SAINT JOSEPH MEDICAL CENTER MD 9.5 
BON SECOURS HOSPITAL MD 9.6 
HOLY CROSS HOSPITAL MD 9.6 
CARROLL HOSPITAL CENTER MD 9.7 
SINAI HOSPITAL OF BALTIMORE MD 9.7 
FREDERICK MEMORIAL HOSPITAL MD 9.8 
SUBURBAN HOSPITAL MD 9.9 
UNION HOSPITAL OF CECIL COUNTY MD 9.9 

该功能可以得到2个参数:

  1. 状态(检查原始CSV数据)
  2. 心脏攻击/热故障/肺炎

我完整的代码是

best <- function(states,outcomes) 
{ 

    #patterns is obtained to use them in the regex function 
    patterns<-paste("^Hospital.*",outcomes, sep="") 
    Readcsv<-read.csv("outcome-of-care-measures.csv", check.names = F) 
    columnname<-colnames(Readcsv) 
    #regex operation going on 
    regex1<-grep(patterns,columnname,ignore.case=TRUE, value = T) 
    #another regex operation 
    Extracted<-grep("Mortality",regex1,ignore.case=TRUE, value = T) 
    #extract dataframe based on the state and final extracted column name using the regex function 
    dfe<-subset(Readcsv, Readcsv$State == states & Readcsv[[Extracted]]!="Not Available") 
    #create a vector 
    b<-c("Hospital Name","State", Extracted) 
    #extract only those columns seen in the vector 
    work<-dfe[,b] 
    #change column name 
    colnames(work)<-c("Hosptial","State","Mortality") 
    # stuck after this point 
    Ascorder<-work[with(work, order(Mortality, Hosptial)),] 

} 

我是比较新的堆栈溢出,请介意我的格式问题。我想知道我要去哪里错了。

回答

1

您可以使用dplyr此:

require(dplyr) 
work <- work %>% 
    arrange(Mortality, Hospital) 

我无法测试它,因为你没有给你的数据的可重复的例子,但它应该做的伎俩。

+0

当我试图直接过滤的数据帧排序是不正确的顺序上应用此,但是当我到一个CSV导出的过滤DF并再次阅读和实现的功能,它工作得很好。但无论如何,它现在的工作。感谢您的解决方案。 –