2014-05-10 3 views
-1

나는 3 열 (병원 이름 - 문자, 주 문자, 사망률 숫자)이있는 CSV 파일에서 데이터를 읽고 있습니다 :내 R 프로그램에 버그를 찾을 수 없습니다

datafile <- read.csv("outcome-of-care-measures.csv", 
    na.strings = "Not Available", 
    colClasses = c("character","character","numeric")) 
이제

내가 분할을 상태에 따라 데이터 :

## split data based on state name 
data_split <- split(datafile,datafile$State) 

내 문제는 각 상태에서 "최악"병원 (가장 높은 사망률을) 찾아 결과를 표시하는 것입니다. 이를 위해 먼저 데이터를 정렬했습니다. "(속도는 목록 임)

for (i in 1:length(data_split)){ 
    ## remove all rows with NA 
    rate[[i]] <- data_split[[i]][complete.cases(data_split[[i]][ ,3]), ] 
    ##sort by mortality and remove 
    ## conflict by hospital name 
    rate[[i]] <- rate[[i]][order(rate[[i]][, 3],rate[[i]][ ,1]), ] 

} 

프로그램이 작동하지만 많은 주에서 잘못된 병원 이름을 얻고 있습니다. 프로그램에서 오류를 찾을 수 없습니다.

+3

안녕하세요. 일종의 재현 가능한 데이터 예제가 있으면 좋을 것입니다. [이 주제] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)를 확인하십시오. 그 외에 더 나은 제목의 질문을 통해 더 나은 답변을 얻고 주제를 검색하는 동안 더 쉽게 찾을 수 있습니다. –

답변

1

왜 data.frame을 분할합니까?

이와 비슷한 것이 있습니까?

df <- data.frame('hospital' = LETTERS[1:6], 
       'state' = rep(c('state1', 'state2', 'state3'),2), 
       'mr' = c(1:6)) 
df 
    hospital state mr 
1  A state1 1 
2  B state2 2 
3  C state3 3 
4  D state1 4 
5  E state2 5 
6  F state3 6 

df2 <- df[with(df, order(-mr, state)), ] 

df2[!duplicated(df2$state), ] 
    hospital state mr 
6  F state3 6 
5  E state2 5 
4  D state1 4 

귀하의 접근 방식을 사용하면 모든 초기 항목을 포함하여 목록을 유지 관리 할 수 ​​있습니다. 하지만 왜?

ds <- split(df, df$state) 
rate <- list() 
for (i in 1:length(ds)){ 
    ## remove all rows with NA 
    rate[[i]] <- ds[[i]][complete.cases(ds[[i]][ ,3]), ] 
    ##sort by mortality and remove 
    ## conflict by hospital name 
    rate[[i]] <- rate[[i]][order(- rate[[i]][, 3], rate[[i]][ ,1]), ] 

} 
rate 

[[1]] 
    hospital state mr 
4  D state1 4 
1  A state1 1 

[[2]] 
    hospital state mr 
5  E state2 5 
2  B state2 2 

[[3]] 
    hospital state mr 
6  F state3 6 
3  C state3 3 
+0

제안 된 변경에 대해 고마워하지만 누군가 내 코드에서 무엇이 잘못되었는지 자세히 설명 할 수 있으면 고맙겠습니다. 또한 한 칼럼의 이름은 "심장 마비로 인한 병원 30 일 사망률 (사망률)"입니다. $ 기호로 해당 열을 어떻게 액세스 할 수 있습니까? – bipvan

+0

@bipvan. 필요한 경우 df $ "var name"또는 df [, 1]로 호출 할 수 있습니다. 나는 그런 이름을 피하기 위해 말하고 싶다. 짧은 대문자로 된 이름을 대신 사용하고 R 내외부의 출력에 필요한 경우 변경할 수 있습니다. 객체를 가져 오는 동안 R은 변수 이름의 공백을 제거하거나 대체하려고 시도합니다. –

관련 문제