2016-07-13 9 views
0

私のデータフレームから複数のベクトルを作成し、その後これらの(ペアになった)ベクトルに対してテストを行いたいと思います。下のデータフレームでは、Aは2レベルの係数、Bは5レベルの係数、Cは数値変数です。テストのためにデータフレームから複数のベクトルを作成する

したがって、VAR2の各値について、X対Y(VAR1)のVAR3の値をテストしたいと思います。以下の例では、A(VAR2)の場合、Xにはベクトル(1,2)、Yには(6,12)が必要です(VAR2の他の要素にもベクトルが必要です)。私は私が私の実際のデータセットがVAR2のための約80のユニークな値を持っているため、カスタムメイドの機能を(使用する必要があると思うが、私はそれを作成する方法はありませんありません。

ID VAR1 VAR2 VAR3 
1 1 X A 1 
2 2 Y B 4 
3 3 Y C 3 
4 4 Y A 6 
5 5 Y D 3 
6 6 X A 2 
7 7 X B 6 
8 8 Y C 9 
9 9 Y A 12 
10 10 Y E 2 
+1

あなたは機能のために所望の出力を追加してもらえますか? –

+0

理想的には、出力はそれぞれのテスト(例えばコルモゴロフ - スミルノフ)の結果になりますVAR2のユニークな値、VAR1からXとYをテストする –

答えて

1

なり、このようなものは、あなたが望む結果を生み出します?

data = fread(' ID VAR1 VAR2 VAR3 
       1 X A 1 
       2 Y B 4 
       3 Y C 3 
       4 Y A 6 
       5 Y D 3 
       6 X A 2 
       7 X B 6 
       8 Y C 9 
       9 Y A 12 
       10 Y E 2') 


data$VAR2=as.factor(data$VAR2) 
factors= levels(data$VAR2) 
lapply(factors,function(i){ 
    x_values=data[VAR2==i & VAR1=="X"]$VAR3 
    y_values=data[VAR2==i & VAR1=="Y"]$VAR3 
    ks.test(x_values, y_values) 
}) 

私は、これはあなたが示唆した答えが一致すると思います。

+0

この結果、正しい組み合わせが得られましたが、各セルにカンマ区切りの値があり、このテストをどのように実行するかわかりません –

+0

似たような問題については、http://stackoverflow.com/questions/38346499/statistical-複数の列からのデータフレームのテスト)誰かが次のように示唆した:lapply(cols、function(i){#各列の各レベルでEを評価する x < - factor(dat [、i]) a < - E [x == levels(x)[1]] b < - E [x == levels(x)[2]] ks.test(a、b) })そういうものは理想的な –

+0

私が探しているものとまったく同じです!唯一のことは、VAR1オブジェクト(およびVAR2オブジェクト)が見つからないという実際のデータにエラーが発生することです。 –

関連する問題