У меня есть dataframe следующим образом:Пустые строки в списке в качестве значений NA в data.frame в R
hospital <- c("PROVIDENCE ALASKA MEDICAL CENTER", "ALASKA REGIONAL HOSPITAL", "FAIRBANKS MEMORIAL HOSPITAL",
"CRESTWOOD MEDICAL CENTER", "BAPTIST MEDICAL CENTER EAST", "ARKANSAS HEART HOSPITAL",
"MEDICAL CENTER NORTH LITTLE ROCK", "CRITTENDEN MEMORIAL HOSPITAL")
state <- c("AK", "AK", "AK", "AL", "AL", "AR", "AR", "AR")
rank <- c(1,2,3,1,2,1,2,3)
df <- data.frame(hospital, state, rank)
df
hospital state rank
1 PROVIDENCE ALASKA MEDICAL CENTER AK 1
2 ALASKA REGIONAL HOSPITAL AK 2
3 FAIRBANKS MEMORIAL HOSPITAL AK 3
4 CRESTWOOD MEDICAL CENTER AL 1
5 BAPTIST MEDICAL CENTER EAST AL 2
6 ARKANSAS HEART HOSPITAL AR 1
7 MEDICAL CENTER NORTH LITTLE ROCK AR 2
8 CRITTENDEN MEMORIAL HOSPITAL AR 3
Я хотел бы создать функцию, rankall, который принимает ранг в качестве аргумента и возвращает больницы этого ранга для каждого государства, при этом НС возвращаются, если в штате нет больницы, которая соответствует данному рангу. Например, я хочу вывод rankall (ранг = 3), чтобы выглядеть следующим образом:
hospital state
AK FAIRBANKS MEMORIAL HOSPITAL AK
AL <NA> AL
AR CRITTENDEN MEMORIAL HOSPITAL AR
Я пробовал:
rankall <- function(rank) {
split_by_state <- split(df, df$state)
ranked_hospitals <- lapply(split_by_state, function (x) {
x[(x$rank==rank), ]
})
combined_ranked_hospitals <- do.call(rbind, ranked_hospitals)
return(combined_ranked_hospitals[ ,1:2])
}
Но rankall (ранг = 3) возвращает:
hospital state
AK FAIRBANKS MEMORIAL HOSPITAL AK
AR CRITTENDEN MEMORIAL HOSPITAL AR
Это не учитывает значения NA, которые мне нужно отслеживать. Есть ли способ, чтобы R распознавал пустые строки в моем объекте списка в моей функции как NA, а не как пустые строки? Есть ли еще одна функция, кроме того, что было бы более полезно для этой задачи?
[Примечание: этот информационный кадр - курс Курса программирования Курсера. Это также мой первый пост в Stackoverflow, и я впервые изучал программирование. Спасибо всем, кто предложил решения и советы, этот форум является фантастическим. ]
Это курс Курсера. Пожалуйста, отдайте должное кредиту. – KFB