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  

ここで、これらの数値を操作して、(頻繁に + 常に)/合計の応答を取得したいと考えています。ただし、要約出力は文字出力です。コロンで分割できますが、もっと良い方法があるはずです。

上記のデータセットを使用して、質問ごとのよくある回答と合計回答の割合を計算するにはどうすればよいですか?

4

1 に答える 1

1

これは and を使用して行うことができますapply(あなたのデータフレームであるとtable仮定します):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)
})
于 2013-03-14T14:39:29.073 に答える