Как взять корреляцию каждой отдельной строки в векторе между каждой другой строкой в ​​этом векторе для значений во втором векторе - PullRequest
0 голосов
/ 06 мая 2019

Я пытаюсь получить корреляцию для каждой уникальной пары. Это столбцы, в которых указано состояние 1 и 2, год и неделя года. Я хочу получить корреляцию между суммой общего годового значения для каждой уникальной пары штатов.

Мой фрейм данных выглядит следующим образом.

state1   count  year  week#  (corelation column)
v1        x   
v1        x
v1        x
v2        x
v2        x
v3        x

Я хочу, чтобы это выглядело так

state1  State2 count  year  week#  (corelation column)
v1      v2     x   
v1      v3     x
v1      v4     x
v2      v3     x
v2      v4     x
v3      v4     x

Я хотел, чтобы конечный результат возвращал что-то вроде этого.

State 1 | State 2 | Correlation 
Alabama | Alaska  | .64
Alabama | Utah    | .10 
Alabama | Arizona | .20 
Alaska  | Utah    | .59
Alaska  | Arizona | .20
Utah    | Arazona | .10 

Я получаю некоторые данные о заболеваниях из CDC, которые и есть chl16- chl18

temp <- rbind(chl15, chl16, chl17, chl18)
temp[is.na(temp$Chlamydia.trachomatis.infection..Current.week),4] <- 0
datacor <- NULL;
for(i in 1:length(state2)) {
    datacor$Year[i] <- temp$MMWR.Year[i]
    datacor$State1[i] <- as.character(state2[i])
    datacor$State2[i] <- as.character(state2[i])
    datacor$corelaiton2015[i] <- print(cor(temp[temp$Reporting.Area == state2[1] &  temp$MMWR.Year == 2015, 4], temp[temp$Reporting.Area == state2[i] & temp$MMWR.Year == 2015, 4], use = "complete.obs"))
    datacor$corelation2016[i] <- print(cor(temp[temp$Reporting.Area == state2[1] & temp$MMWR.Year == 2016, 4], temp[temp$Reporting.Area == state2[i] & temp$MMWR.Year == 2016, 4], use = "complete.obs"))
    datacor$corelation2017[i] <- print(cor(temp[temp$Reporting.Area == state2[1] & temp$MMWR.Year == 2017, 4], temp[temp$Reporting.Area == state2[i] & temp$MMWR.Year == 2017, 4], use = "complete.obs"))
    datacor$corelation2018[i] <- print(cor(temp[temp$Reporting.Area == state2[1] & temp$MMWR.Year == 2018, 4], temp[temp$Reporting.Area == state2[i] & temp$MMWR.Year == 2018, 4], use = "complete.obs"))
    datacor$Latitude[i] <- loc$LATITUDE[i]
    datacor$Longitude[i] <- loc$LONGITUDE[i]
}  
datacor <- data.frame(datacor)

Я получаю столбец, который показывает состояния 1 и два, но не дает мне уникальных пар, он также дает мне корреляцию для первого состояния для каждого года с остальными состояниями, а не уникальные пары корреляции. Пожалуйста, помогите, если это возможно. Спасибо:)

...