결과

2013-03-14 2 views
1

나는이 다음과 같습니다 일부 데이터 : 요약을 사용결과

  A  B 
6  Often Often 
7 Always Always 
8 Rarely Rarely 
9 Sometimes Often 

structure(list(A = structure(c(5L, 6L, 3L, 4L), .Label = c("", 
"Almost Never", "Rarely", "Sometimes", "Often", "Always"), class = c("ordered", 
"factor")), B = structure(c(5L, 6L, 3L, 5L), .Label = c("", "Almost Never", 
"Rarely", "Sometimes", "Often", "Always"), class = c("ordered", 
"factor"))), .Names = c("A", "B"), row.names = 6:9, class = "data.frame") 

, 내가 원하는 정확히 가능한 응답에 대한 응답의 각 유형의 수를 얻을 :

  A    B  
      :0    :0 
Almost Never:0 Almost Never:0 
Rarely  :1 Rarely  :1 
Sometimes :1 Sometimes :0 
Often  :1 Often  :2 
Always  :1 Always  :1 

이제 (자주 + 항상)/총 응답을 얻기 위해이 숫자를 조작하고 싶습니다. 요약 출력은 문자 출력이지만 콜론에서 분리 할 수 ​​있지만 더 좋은 방법이 있어야합니다.

위 데이터 세트가 주어지면 질문 당 Often + Total 응답의 비율을 어떻게 계산할 수 있습니까?

답변

1

applytable을 사용하여 수행 할 수 있습니다 (데이터 프레임 d입니다 가정) : 위에서 한 "종종"적어도 "항상"항상있을 경우에만 작동 할 것이다

apply(d, 2, function(col) { 
    tab = table(col) 
    (tab["Often"] + tab["Always"])/sum(tab) 
}) 

하는 것으로 각 열. 다음은 간략하지 않지만 열에 "항상"또는 "자주"가없는 경우에도 작동합니다.

sapply(1:NCOL(d), function(i) { 
     tab = table(d[, i]) 
     (tab["Often"] + tab["Always"])/sum(tab) 
})