Инструкции для Университета Джона Хопкинса Программирование R На задании 3 предоставлен код для считывания данных Outcome of Care в больнице с аргументом colClasses = "character"
.
Ключевой частью назначения является передача символьных аргументов в три функции, необходимые для назначения. Если данные читаются без colClasses = "character"
, символьные строки будут преобразованы в коэффициенты, что очень затруднит их использование с функциями, требующими символьных аргументов.
Тестовые случаи для первой функции, best()
, следующие:
best("TX","heart attack")
best("MD","heart attack")
best("MD","pneumonia")
best("BB","heart attack")
best("NY","pneumonia")
Как только данные загружены в кадр данных в R, можно исключить ненужные столбцы. и преобразуйте поля цифры c, необходимые для назначения, в числа с as.numeric()
.
Почему мы не можем оставить результаты в виде символьных переменных?
Назначение в значительной степени зависит от сортировки данных по результатам. Если результаты не преобразуются в цифры c, значения, подобные 14,3, будут отсортированы впереди 2,3, что приведет к неточным результатам для функций, которые будут построены.
Воспроизводимый ответ
Чтобы сделать ответ полностью воспроизводимым, мы можем загрузить данные больницы, поместить их в нужные столбцы и преобразовать цифры c столбцы в цифру c.
if(!file.exists("./data/outcome-of-care-measures.zip")){
if(!dir.exists("./data")) dir.create("./data")
url <- "https://d396qusza40orc.cloudfront.net/rprog%2Fdata%2FProgAssignment3-data.zip"
download.file(url,destfile='./data/outcome-of-care-measures.zip',mode="wb")
unzip(zipfile = "./data/outcome-of-care-measures.zip",exdir="./data")
}
# read data & keep only necessary columns
theData <- read.csv("./data/outcome-of-care-measures.csv",colClasses = "character",
na.strings="Not Available")[,c(2,7,11,17,23)]
colnames(theData) <- c("hospital","state","heart attack","heart failure","pneumonia")
theData[3:5]<- lapply(3:5,function(i) as.numeric(theData[,i]))
head(theData)
... и вывод:
> head(theData)
hospital state heart attack heart failure pneumonia
1 SOUTHEAST ALABAMA MEDICAL CENTER AL 14.3 11.4 10.9
2 MARSHALL MEDICAL CENTER SOUTH AL 18.5 15.2 13.9
3 ELIZA COFFEE MEMORIAL HOSPITAL AL 18.1 11.3 13.4
4 MIZELL MEMORIAL HOSPITAL AL NA 13.6 14.9
5 CRENSHAW COMMUNITY HOSPITAL AL NA 13.8 15.8
6 MARSHALL MEDICAL CENTER NORTH AL NA 12.5 8.7
>