Я работаю в R и хочу провести корреляцию различных переменных, относящихся к одной из моих факторных переменных, сервису. Я действительно понятия не имею, как это сделать. Я смотрел на плавление и транспонирование, но ни одна из этих функций не дает мне нужного формата. Я думаю, что мне нужно разбить факторный вектор на отдельные векторы (соответствующие каждому уровню обслуживания), а затем каким-то образом получить одну числовую переменную (сумофкейсы, например), чтобы она стала наблюдением для только что созданного вектора обслуживания. Таким образом, один уровень обслуживания — это госпитализация, а другой — управление делами. Тогда у меня будет один вектор под названием «Госпитализация», а другой — «ведение случаев», и наблюдения в каждом столбце будут соответствующими значениями для «суммы случаев». Затем я могу провести корреляцию между двумя векторами обслуживания. Таким образом, это приведет к созданию многочисленных фреймов данных (что хорошо, если это работает).
Вот пример данных:
Year Region Service SumofCases
2010 10 Hospitalization 324
2011 1 Case Management 200
И я хочу, чтобы это выглядело так:
Year Region Hospitalization Case Management
2010 10 200 NA
2011 1 NA 324
Я подумал, что, возможно, внутри корреляционной функции есть что-то, что позволило бы мне провести корреляцию между уровнями фактора, но пока ничего не нашел.
@Thomas, в ответ на ваш ответ:
Я думаю, что это определенно движется в правильном направлении, но что мне делать с неравномерными уровнями факторов?
Я запустил этот код:
tmp<-MIC$Service levels(tmp)
levels(tmp)<-c("Ancillary Services", rep("Health Services",2))
cor(as.numeric(tmp),MIC$SumofCases)`
и получил следующую ошибку:
Error in levels<-.factor`(*tmp*, value = c("Ancillary Services", "Health Services", : >number of levels differs > cor(as.numeric(tmp),MIC$SumofCases) [1] NA`
Результат запуска dput(head(MIC))
:
dput(head(MIC))
structure(list(FY = structure(c(6L, 1L, 1L, 1L, 1L, 1L), .Label = c("2006",
"2007", "2008", "2009", "2010", "2011"), class = "factor"), Region =
structure(c(1L,4L, 6L, 6L, 9L, 2L), .Label = c("1", "10", "2", "3", "4", "5","6", "7",
"8", "9"), class = "factor"), SumofCases = c(0,1, 1, 2, 11, 14), Service =
structure(c(17L, 4L, 4L, 4L,4L, 4L), .Label = c("Ancillary Services", "Behavioral
Treatment","Care Coordination", "Community Living Supports", "Crisis Services",
"Dental", "ECT", "Employment Services", "Equipment", "Family Services", "Fiscal
Intermediary Services", "Health Services", "Hospitalization", "Medication",
"Monitoring", "OT/PT/SLT", "Other", "Peer Services", "Prevention", "Residential
Treatment", "Respite", "Screening & Assessment", "Therapy", "Transportation"), class =
"factor")), .Names = c("FY", "Region", "SumofCases", "Service"),
row.names = c(NA,6L), class = "data.frame")
После запуска следующего кода я получаю NA для функции cor.
tmp<-MIC$Service
levels(tmp)
levels(tmp)<-c("Ancillary Services","Behavioral Treatment","Care Coordination",
"Community Living Supports","Crisis Services","Dental","ECT","Employment Services",
"Equipment","Family Services",
"Fiscal Intermediary Services","Health Services",
"Hospitalization","Medication",
"Monitoring","OT/PT/SLT",
"Other","Peer Services",
"Prevention", "Residential Treatment",
"Respite","Screening & Assessment",
"Therapy","Transportation")
cor(as.numeric(tmp),MIC$SumofCases)
Вывод:
> cor(as.numeric(tmp),MIC$SumofCases)
[1] NA