2012-07-16 4 views
0

이것은 내 데이터 세트이며이 데이터 세트에 대한 스크립트를 작성하려고 R 및 iam을 처음 사용했습니다.R에서 데이터 정렬 및 값 추출 방법?

R> head(KenTau) 
    Age CapReg TrSw FeelChk CanSw 
1 20  1 0  0  0 
2 36  1 0  0  0 
3 35  1 3  2  2 
4 21  0 0  2  2 
5 43  0 0  2  2 
6 34  1 0  0  0 

은 내가 R에서 실행이 하나를 사용

TrSw Vs Age 
TrSw Vs CapReg 
TrSw Vs FeelChk 
TrSw Vs CanSw 

즉 colmn 변수의 나머지 부 (Trsw)를 비교할 나는

cor.test(KenTau$Age, KenTau$TrSw, alternative="two.sided", method="kendall") 

또한 내가 원하는이 명령을 사용하여 나이와 pvalue를 추출하여 50 개의 변수가있는 목록을 가질 수 있습니다. 데이터의

dput() :

KenTau <- structure(list(Age = c(20L, 36L, 35L, 21L, 43L, 34L, 37L, 62L, 
54L, 47L, 48L, 45L, 2L, 2L, 2L, 54L, 52L, 40L, 58L, 29L, 27L, 
28L, 46L, 35L, 50L, 31L, 48L, 2L, 29L, 54L, 52L, 28L, 28L, 26L, 
38L, 59L, 51L, 58L, 39L, 44L, 53L, 2L, 39L, 55L, 48L, 2L, 23L, 
51L, 50L, 26L, 28L, 40L, 38L, 61L, 52L, 33L, 2L, 59L, 27L, 45L, 
45L, 57L, 66L, 52L, 58L, 34L, 28L, 39L, 48L, 53L, 39L, 46L, 57L, 
36L, 25L, 22L, 29L, 46L, 25L, 25L, 35L, 44L, 24L, 26L, 33L, 27L, 
41L, 28L, 26L, 32L, 36L, 35L, 32L, 33L, 29L, 29L, 52L, 55L, 23L, 
29L, 45L, 26L, 48L, 54L, 50L, 35L, 27L, 39L, 41L, 30L, 30L, 31L, 
27L, 28L, 27L, 25L, 34L, 23L, 30L, 34L, 52L, 20L, 31L, 2L, 45L, 
34L, 21L, 60L, 34L, 40L, 47L, 30L, 54L, 36L, 32L, 31L, 55L, 57L, 
23L, 31L, 26L, 26L, 27L, 19L, 26L, 25L, 37L, 47L, 38L, 38L, 26L, 
25L, 41L), CapReg = c(1L, 1L, 1L, 0L, 0L, 1L, 0L, 0L, 1L, 0L, 
1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 1L, 0L, 1L, 1L, 0L, 
0L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 
1L, 0L, 0L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 
0L, 1L, 1L, 0L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 
1L, 0L, 1L, 0L, 0L, 1L, 0L, 1L, 0L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 
1L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 
1L, 0L, 0L, 1L, 0L, 0L, 1L, 1L, 0L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 0L, 1L, 0L, 0L, 0L, 1L, 0L, 
1L, 0L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), 
    TrSw = c(0L, 0L, 3L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 
    1L, 0L, 1L, 1L, 1L, 0L, 1L, 1L, 0L, 1L, 0L, 0L, 1L, 1L, 1L, 
    0L, 0L, 1L, 0L, 0L, 1L, 1L, 0L, 1L, 1L, 0L, 0L, 1L, 1L, 0L, 
    1L, 1L, 1L, 0L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    0L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 0L, 1L, 0L, 0L, 1L, 0L, 0L, 
    1L, 1L, 0L, 1L, 1L, 0L, 1L, 0L, 1L, 0L, 0L, 0L, 1L, 0L, 1L, 
    1L, 1L, 0L, 3L, 0L, 0L, 1L, 0L, 1L, 0L, 1L, 1L, 0L, 0L, 0L, 
    0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 1L, 1L, 0L, 1L, 1L, 1L, 0L, 
    1L, 1L, 0L, 0L, 1L, 1L, 1L, 0L, 1L, 0L, 1L, 0L, 0L, 1L, 1L, 
    1L, 1L, 0L, 1L, 1L, 1L), FeelChk = c(0L, 0L, 2L, 2L, 2L, 
    0L, 2L, 2L, 2L, 3L, 0L, 0L, 1L, 0L, 1L, 0L, 0L, 2L, 0L, 1L, 
    0L, 1L, 2L, 2L, 1L, 1L, 0L, 2L, 2L, 1L, 2L, 2L, 0L, 1L, 2L, 
    0L, 1L, 2L, 2L, 3L, 0L, 2L, 1L, 0L, 0L, 2L, 1L, 2L, 2L, 1L, 
    1L, 0L, 1L, 2L, 0L, 1L, 0L, 0L, 1L, 1L, 0L, 3L, 1L, 2L, 1L, 
    1L, 0L, 0L, 1L, 1L, 1L, 0L, 2L, 3L, 1L, 2L, 2L, 1L, 1L, 0L, 
    2L, 1L, 0L, 1L, 1L, 0L, 2L, 1L, 1L, 0L, 0L, 0L, 2L, 1L, 2L, 
    1L, 0L, 0L, 0L, 0L, 2L, 0L, 1L, 0L, 2L, 2L, 2L, 0L, 0L, 2L, 
    3L, 2L, 0L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 0L, 0L, 1L, 2L, 2L, 
    1L, 1L, 2L, 0L, 3L, 1L, 0L, 1L, 1L, 2L, 2L, 3L, 3L, 1L, 0L, 
    0L, 2L, 0L, 2L, 2L, 3L, 0L, 1L, 1L, 2L, 0L, 0L, 0L), CanSw = c(0L, 
    0L, 2L, 2L, 2L, 0L, 2L, 2L, 2L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 
    0L, 2L, 2L, 0L, 0L, 0L, 2L, 2L, 0L, 0L, 2L, 2L, 2L, 3L, 2L, 
    2L, 0L, 0L, 2L, 0L, 0L, 2L, 2L, 1L, 1L, 2L, 0L, 0L, 2L, 2L, 
    3L, 2L, 2L, 1L, 1L, 2L, 1L, 2L, 0L, 1L, 0L, 2L, 1L, 3L, 1L, 
    0L, 0L, 2L, 0L, 0L, 0L, 2L, 0L, 1L, 1L, 1L, 2L, 0L, 1L, 2L, 
    2L, 1L, 1L, 0L, 2L, 0L, 0L, 1L, 0L, 0L, 2L, 1L, 0L, 0L, 0L, 
    0L, 2L, 1L, 2L, 0L, 2L, 2L, 0L, 1L, 2L, 0L, 1L, 0L, 2L, 2L, 
    2L, 0L, 0L, 2L, 3L, 2L, 0L, 0L, 2L, 2L, 2L, 2L, 2L, 2L, 0L, 
    0L, 0L, 2L, 2L, 1L, 1L, 2L, 1L, 0L, 0L, 2L, 0L, 1L, 2L, 2L, 
    1L, 1L, 0L, 0L, 2L, 2L, 0L, 2L, 2L, 3L, 1L, 1L, 0L, 2L, 0L, 
    2L, 0L)), .Names = c("Age", "CapReg", "TrSw", "FeelChk", 
"CanSw"), class = "data.frame", row.names = c(NA, -153L)) 

답변

3

내가 50 상관 관계에 대한 P-값을 생성하는 통계 장점을 확신 아니에요 동안,이 lapply() 및 친구들과 함께 할 매우 쉽습니다. 이를 위해

내가 그와 같은 "TrSw"하지 KenTaunames의 인덱스를 반복하기로 결정했습니다 당신이 모든 다른 사람을 비교하고자하는 변수입니다. 내가 먼저 which()를 사용하는 인덱스를 잡아 :

R> inds <- which(names(KenTau) != "TrSw") 
R> inds 
[1] 1 2 4 5 

다음 내가 inds 반복합니다 lapply()에 전화를 설정합니다. 이제 인덱스 ind을 첫 번째 인수로 사용하는 익명의 함수가 필요합니다. (이것은 각 반복에서 내 함수를 lapply()이 전달할 것입니다.) 그리고 나는 데이터를 전달해야합니다. 이는 인수 x입니다. 내 익명의 함수는 귀하의 예제에서 보여준 것처럼 cor.test()을 호출하지만, 과 연관되어있는 현재 색인 또는 열을 참조하는 데 x[, ind]이 사용되는 방법에 유의하십시오.

cors <- lapply(inds, 
       function(ind, x) { 
        cor.test(x[, ind], x[, "TrSw"], alternative="two.sided", 
          method="kendall") 
       }, x = KenTau) 

입니다 목록에 어떤 이름을 추가 : 있도록 익명 함수에 x을 볼 때마다 lapply() 호출의 마지막 부분은 x로 전달할라고, 데이터는 KenTau이 정말 KenTau의 사본을 말한다 cors는 이제 그렇게 나중에 도움이 될 것입니다

names(cors) <- names(KenTau)[inds] 

우리가 목록입니다 볼 우리가 cors 보면 :

R> str(cors, max = 1) 
List of 4 
$ Age :List of 8 
    ..- attr(*, "class")= chr "htest" 
$ CapReg :List of 8 
    ..- attr(*, "class")= chr "htest" 
$ FeelChk:List of 8 
    ..- attr(*, "class")= chr "htest" 
$ CanSw :List of 8 
    ..- attr(*, "class")= chr "htest" 

목록의 각 요소는 "htest"의 개체이며 cor.test()이 반환합니다. 4 개의 변수가 있었기 때문에 이러한 개체가 4 개 있습니다. TrSw과 비교하십시오.

당신은 페이지 - 값을 추출 할, 그래서 우리는이가 "htest" 객체에 저장되는 위치를 확인해야합니다 구성 요소에 저장됩니다

R> str(cors[[1]]) 
List of 8 
$ statistic : Named num 1.57 
    ..- attr(*, "names")= chr "z" 
$ parameter : NULL 
$ p.value : num 0.116 
$ estimate : Named num 0.105 
    ..- attr(*, "names")= chr "tau" 
$ null.value : Named num 0 
    ..- attr(*, "names")= chr "tau" 
$ alternative: chr "two.sided" 
$ method  : chr "Kendall's rank correlation tau" 
$ data.name : chr "x[, ind] and x[, \"TrSw\"]" 
- attr(*, "class")= chr "htest" 

위의 출력은 페이지 - 값을 보여줍니다 p.value.4 페이지를 -values를 추출하려면, 우리는 사실상,이 작업을 수행 할 : i 차례로 cors의 각 요소이다

res[[i]][["p.value"]] 

. 이를 위해 lapply()을 다시 사용할 수 있지만 sapply()은 결과를 벡터로 단순화합니다.이 경우에는 더 깔끔하지 않습니다. sapply() 호출은 각각 res[[i]] 번을 전달하므로 [[ 함수를 적용하면됩니다 (예, 하나가 아닌 것처럼 보일 수도 있지만 함수가 매우 큰 경우는 "[["()). 이 함수는 내가 "p.value"로 전달 (우리는 구성 요소 우리가 추출 할의 이름을 사용할 수 있습니다이 경우) 단일 인수한다 : 나는 corsnames를 추가하기 때문에

res <- sapply(cors, `[[`, "p.value") 

sapply()는 이름을 반환합니다 명명 된 변수 사이의 상관 관계의 페이지 -values를 포함하는 벡터 TrSw : 당신은 결과의 다른 구성 요소를 원하는 경우

R> res 
     Age  CapReg  FeelChk  CanSw 
1.157889e-01 3.920115e-01 2.189736e-04 1.578040e-06 

가, 검정 통계량 자체를 말하는, 다음교체에 원하는 구성 요소의 이름 (예 : "statistic" 켄달의 타우를 얻으십시오.

많은 변수에 대해이 작업을 수행하려는 경우 여러 테스트에 대해 읽은 다음 p - 값을 조정하면 결과가 단지 50 개의 상관 관계로 유용 할 것이라고 확신 할 수 없습니다.