2016-04-10 17 views
0

多問変数の頻度を得るために調査データを分析する必要があります。私は使用していますthis R package調査中の複数選択データR

私は私が働く変数を作成するために 'multi.split'関数を使う必要があることを理解しています。しかし、私はデータセットに含まれていない参照回答をどのように作成することができるかを知る必要があります。つまり、元の質問の一部であったが、調査中に選択されなかった回答を意味するため、値0で表示する必要があります。

例: 私は、次のまずまずの答えを持っている:

"red", "blue", "green" and "yellow" 

と私のデータは、(例のように)です:

:私は、このコマンドを実行すると

v <- c("red/blue","green","red/green","blue/red") 

 n  %multi 
v.blue 2  50 
v.red 3  75 
v.green 2  50 

が、私は希望を得るために:

multi.table(multi.split(v)) 

は、私は次のような結果を得る

  n  %multi 
v.blue 2  50 
v.red 3  75 
v.green 2  50 
v.yellow 0  0 

私はそれを行うことができる方法上の任意のアイデアは?

+0

これまでに試していないのであれば、「memisc」パッケージには調査分析のための便利なツールがあります。 –

答えて

0

私はこのパッケージを一度も使用していませんが、試してみます。あなたは、次のような何かを行うことができ、統計を取得する前に別の列を追加したいので、もし

機能multi-split()はdata.frameを生成します。

v <- c("red/blue","green","red/green","blue/red") 
a <- multi.split(v) 
a$v.yellow <- 0 
multi.table(a) 


## > multi.table(a) 
## n %multi 
## v.blue 2  50 
## v.red 3  75 
## v.green 2  50 
## v.yellow 0  0 

更新 より汎用的なバージョンが何かを行くだろうそうですね。

1. wanted.dataは、常に出力に必要な列名の文字です。 2. col.to.addは、a data.frameにない列です。 3.次に、存在しなかった列に0を割り当てます。 4.最後に列を並べて、常に同じ順序に並べます。

library(questionr) 
v <- c("red/blue","green","red/green","blue/red") 
wanted_data <- c("v.red","v.blue","v.green","v.yellow") 

a <- multi.split(v) 
col.to.add<- wanted_data[!(wanted_data%in% colnames(a))] 
a[col.to.add] <- 0 
a[,order(colnames(a))] 
multi.table(a) 

## > multi.table(a) 
## n %multi 
## v.blue 2  50 
## v.red 3  75 
## v.green 2  50 
## v.yellow 0  0 
+0

これをより一般的にする方法はありますか? "赤"、 "青"、 "緑"、 "黄"のラベルがある場合は、のテーブルの列は、常に赤、青、緑、黄色で表示されるように、ラベルの順序を保持する必要があります。そのデータセットがどのように注文されたか、またはラベルがデータセットの一部であったかどうかを見直す必要があります。ありがとう –

+0

@Shlomi私はまた、このパッケージを使用していないが、あなたが注文した要因をしたいように聞こえる。それらの詳細については '?factor'と入力してください。 – Frank

+0

@djjこの例では、 'wanted_data'では 'red'、 'blue'、 'green'、 'yellow'の順番で表示されるため、列の順序を設定する必要があります。 「青」「赤」「緑」「黄」 –

関連する問題