열 이름의 일치하는 패턴을 기반으로 데이터 프레임의 두 열 간의 상관 관계를 계산하려고합니다. 이 경우 'Obs1_grp1'과 'Obs1_grp2', 'Obs2_grp1'및 'Obs2_grp2'등 열 간의 상관 관계를 얻고 싶습니다.
> test
Individual Obs1_grp1 Obs2_grp1 Obs3_grp1 Obs1_grp2 Obs2_grp2 Obs3_grp2
1 293748 1583 0.09858 0.7639 15.70 0.5877 3230
2 294934 1353 0.11090 0.7639 15.58 0.5697 3604
3 290652 1400 0.11030 0.7639 14.93 0.5779 3462
4 291320 1377 0.11480 0.7639 15.63 0.5706 3130
5 292553 1253 0.10640 0.7639 15.41 0.5750 3601
6 295073 1306 0.09881 0.7639 15.54 0.5829 3630
7 290966 1523 0.10960 0.7639 15.48 0.5724 3274
8 293501 1472 0.10090 0.7639 15.31 0.5764 3507
9 295464 1603 0.10000 0.7639 15.66 0.5816 3512
10 291367 1476 0.09944 0.7639 15.38 0.5805 3116
11 295007 1517 0.11290 0.7639 14.98 0.5773 3130
12 295006 1340 0.11290 0.7639 14.98 0.5773 3130
13 290570 1314 0.10000 0.7639 15.45 0.5806 3759
14 293940 1515 0.10350 0.7639 15.55 0.5824 3564
15 293925 1259 0.10890 0.7639 15.15 0.5757 3593
16 291353 1494 0.09944 0.7639 15.38 0.5805 3116
17 292783 1637 0.10180 0.7639 15.38 0.5754 3396
18 290833 1202 0.11030 0.7639 13.66 0.5743 3106
19 291826 1298 0.10570 0.7639 16.26 0.5786 3946
20 294410 1539 0.10070 0.7639 15.39 0.5829 3550
grep 함수를 사용하려고 생각했지만 어떻게해야할지 모르겠습니까?
또한 계산 된 상관 관계를 데이터 테이블에 넣고 각 상관 관계에 대해 Obs를 지정하고 싶습니다. 이 같은:
> correl
Obs cor
1 Obs1 0.853
2 Obs2 0.952
누구든지 여기서 도울 수 있기를 바랍니다.
다음과 같은 함수를 만들 수 있습니다.
cor_f <- function(x) {
cor(test[,names(test)[grepl(x, names(test))]])[2]
}
cor_f('Obs1') #correlation between Obs1_grp1 and Obs1_grp2
#0.3159908
루프가 필요한 경우 한 가지 방법은 다음과 같습니다.
vars <- c('Obs1', 'Obs2')
sapply(vars, function(i) cor_f(i))
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다