2017-04-10 16 views
0

私は、1列あたり1672エントリのデータセット(PAEscore)を持っています(参加者1人あたり38人、観測44人)。私はFraction_Value対Subject_Fractionを見たいと思っていて、それぞれの主題に対してRの係数を与えるスクリプトのコード部分を作りたいと思います。私がロードしたデータには、件名の列、小数点の列、件名の列があります。これまでのところ、私は私のすべての38人の参加者の組み合わされたデータのためのプロットとR値を与えるコードを持っている:一度に複数のR係数を計算するにはどうすればよいですか?

fit1 <- lm(Fraction_Value ~ Subject_Fraction) 

summary(fit1) 

plot(Fraction_Value ~ Subject_Fraction) 
abline(fit1) 

はしかし、私は私のテーブルを与えるループを実行している多くの問題が生じています各参加者の個々のR値を含む。私はこれを試して、それdoesnt仕事。

PAEcoeff = matrix() 

for (i in levels(PAEscore$Subject_ID)) { 
    # Create temporary data frame: 
    PAE_tmp <- PAEscore[PAEscore$Subject==i,] 
    # Perform regression: 
     reg_result <- lm(PAE_tmp$Fraction_Value ~ PAE_tmp$Subject_Fraction) 
# Get coefficient: 
     tmp_coef <- coef(reg_result) 
    # Store coefficient: 
    PAEcoeff[as.numeric(i)] <- tmp_coef[2] 
} 

あなたは私がそれを修正するために何ができるのですか?私はこれを実行するときに私はエラーを得ることはありませんが、私は空のテーブルを取得します。私は何が欠けていますか?または、これを行う簡単な方法はありますか?

+1

サンプル入力データで[再現可能な例](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)を提供する必要があります。何が起こっているのかがはっきりしていません。 – MrFlick

+0

@李哲源ZheyuanLiどうすればこの問題を解決できますか? – Becky

答えて

0

私の答えは(そうでない場合levels(PAEscore$Subject_IDNULLを与え、あなたのループは何もしません!)PAEscore$Subject_IDが容易要因ではなく、文字であると仮定している

あなたのループカウンタiは、レベルを介してあるので、文字列になります。 as.numeric(i)で数値に変換すると、NAとなります。

修正する。ループ外で初期化する

PAEcoeff <- setNames(numeric(nlevels(PAEscore$Subject_ID)), levels(PAEscore$Subject_ID)) 

次にループ内ではPAEcoeff[i]を使用します。

これを行う簡単な方法はありますか?

グループごとに線形回帰をフィッティングしています。私はLinear Regression and group by in Rを読むことをお勧めします。私の答えはあなたのエラーを修正することです。

+0

それでも空のデータテーブルが得られます。どうすれば間違っているのですか? – Becky

+0

私はこれを試して、それは動作しませんでした。私は何が間違っていますか? PAEcoeff $ Subject_ID < - as.factor(PAEcoeff $ Subject_ID) – Becky

関連する問題