2017-02-19 3 views
1

:私は数値変数でない要因で働いていますsjp.likertコマンドは、sjplot、factorまたはnumeric?では、なぜ2つの異なる結果が得られますか?私は、これは私のコードで、<em>sjp.likert</em>コマンドを使用して私のデータから、2つの異なる結果を得るのです

library(sjPlot) 

l <- c(1,2,2,2,3,3,4,4,5,5,5,4,3,2,2) 

lab <- c("strongly not agree", 
     "not agree", 
     "Neutral", 
     "Agree", 
     "Strongly agree") 


sjp.likert(items  = l, 
      cat.neutral = 3, 
      catcount = 4, 
      legend.labels = lab) 

予告、この時点で、すべてがOKに見えますしかし、時には、legend.labelsパラメータを省略するためにfactorを使用する方が好きです。だから私はこの

l.factor <- factor(x = l,labels = lab) 

sjp.likert(items  = l.factor, 
      cat.neutral = 3, 
      catcount = 4) 

を使用するが、私は問題を取得する場所これは、たとえば、次のとおりです。「ニュートラル」応答は今、もはや20%ではない6.7%です。私が見る限り、パッケージはニュートラルな反応を読み取っています。なぜなら、右側のグレーの色ですからです。

あなたは適切な数は私が間違っているのは何本

prop.table(table(l.factor)) 
prop.table(table(l)) 

を使用して20%であることがわかりますか? これはバグですか?

答えて

0

sjp-likert()関数内の値を並べ替えるのは、(中立のカテゴリを使用している場合)数値の指標に基づいているため、文字レベルの係数では機能しません。だから、関数を呼び出す前に、あなたの因子レベルを注文し直す必要があります:

l.factor <- factor(x = l,labels = lab[c(1,2,4,5,3)]) 

sjp.likert(items  = l.factor, 
      cat.neutral = 5, 
      catcount = 4) 

もう一つの方法は、数値化要因を変換し、ラベル属性として因子レベルを設定することです。引数keep.labels = TRUEsjmisc::to_value()でこれを行うことができます。あなたの例を取ると、slighltyそれを修正する:あなたは簡単に値ラベルを保ち、数値にあなたのデータフレームに要因を変換することができるように

l <- c(1,2,2,2,3,3,4,4,5,5,5,4,3,2,2) 

lab <- c("strongly not agree", 
     "not agree", 
     "Neutral", 
     "Agree", 
     "Strongly agree") 

l.factor <- factor(x = l,labels = lab) 

l.factor <- to_value(l.factor, keep.labels = T) 

sjp.likert(items  = l.factor, 
      cat.neutral = 3, 
      catcount = 4) 

to_value()は、ベクトルデータフレームの両方で動作します。

to_value(my_data_frame, keep.labels = T)

+0

最初。ありがとうございます!ありがとうございました。ドキュメントにこの種の「制限」を追加する計画はありますか?私はそれに要因の変数の問題について何かを見つけられませんでした。私は最後のプロットが生成されたので、実際に私がアイテムを正しく読むと思うようになるので、混乱を招くからです。あるいは関数を変更することはできますか? –

関連する問題