関連するdplyrの質問、Rのドキュメントを見て、構文の誤解と思われるものを並べ替えようとしました。dplyrのgroup_by関数でエラーが発生しました
私のデータの文字列を反映したサンプルデータです。
id <- c(1:20)
xvar <- seq(from=2.0, to=6.0, length.out=100)
yvar <- c(1:100)
binary <- sample(x=c(0,1), size=100, replace=TRUE)
breaks <- c(0,11,21,31,41,51,61,71,81,91,100)
df <- data.frame(id, xvar, yvar, binary)
df <- transform(df, bin=cut(yvar, breaks))
id xvar yvar binary bin
1 1 2.000000 1 1 (0,11]
2 2 2.040404 2 0 (0,11]
3 3 2.080808 3 0 (0,11]
4 4 2.121212 4 0 (0,11]
5 5 2.161616 5 1 (0,11]
6 6 2.202020 6 0 (0,11]
私はbinary
変数で割っxvar
手段は、彼らが所属するbin
グループに基づいて大幅に異なっているかを見て、次のことを実行したいと思います。
pval <- df %>% group_by(bin) %>% summarise(p.value=t.test(xvar ~ factor(binary))$p.value)
しかし、私はエラーを取得し続ける:
を「ファクターをグループ化するには、正確に2つのレベルを持っている必要があります」私はこれに似た記事を見ましたが、問題がT.testが実行されていた方法でした。私は別のgroup_by
オブジェクトを使って同じコードを実行しましたが、うまくいきました。データの時間は重要な要素でした。
どのような考えですか?私はこの質問がどのように提起されたかを改善する方法についての批評に感謝するでしょう。
それぞれのグループ内に 'binary'という値が1つしかないので、' t.test'にそれらの値をどうしたいのかはっきりしません。 't.test(c 1、2)~c(1,1)) 'となる。それぞれの 'xvar'グループの平均をどう比較しようとしていますか? – alistaire
私は、適切なテストを作成するには、生成されるデータフレームが小さすぎる(十分な値がないため)かもしれないと思います。データフレームを少し頑強に編集しましょう。 – asshah4
私が見たいと思っているのは、ある範囲の 'xvar'値に対して、変数' binary 'でグループ化することができ、t検定を実行することができます。グループ化変数としてすべての単一のbinでt検定を実行したいと思います。それは理にかなっていますか? – asshah4