2017-09-24 68 views
0

我已經查看了相關的dplyr問題,R文檔,並嘗試對我認爲是語法誤解的東西進行排序。dplyr中group_by函數的錯誤

以下是反映我的數據strx的示例數據。

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] 

我想運行下面,看着xvar手段,由binary變量劃分如何,都顯著不同的基礎上,他們屬於bin組。

pval <- df %>% group_by(bin) %>% summarise(p.value=t.test(xvar ~ factor(binary))$p.value) 

不過,我不斷收到錯誤:「聚合因子必須只有2級」

我看到了類似的帖子這一點,但問題是T.test是如何正在運行。我使用不同的group_by對象運行了相同的代碼,它工作得很好。數據時間是一個因素和一切。

有什麼想法?我也希望對如何改善這個問題的提出方式提出批評。

+0

在每個組中,只有一個'binary'的值,所以不清楚你想用't.test'來處理這些值,並且它拋出了一個像't.test(c( 1,2)〜c(1,1))'。你想要比較每個'xvar'組的意思到什麼? – alistaire

+0

我認爲生成的數據幀可能太小(所以沒有足夠的值)來創建適當的測試。讓我編輯數據幀,使其更健壯。 – asshah4

+0

我希望顯示的是......對於'xvar'值的範圍,它們可以通過變量'binary'分組,並且可以對它們運行t檢驗。我想對每個'bin'運行t檢驗作爲分組變量。那有意義嗎? – asshah4

回答

0

我想我已經解決了這個問題。

只要t.test中沒有足夠的數據,「分組因子必須有2個水平」。我只是假設我的原始數據集很大,足以不會遇到這個問題。

當我使樣本數據更健壯時,錯誤消失。

對不起,浪費時間,並感謝您的幫助!

1

你不想爲此使用dplyr。你想要一個線性模型

mod <- lm(xvar ~ binary*bin, data=df) 
anova(mod) 

要進一步討論係數,P值和平方和意味着什麼,請考慮詢問stats.SE。

+0

我很感激幫助 - 我必須閱讀更多關於此的信息。我希望找出爲什麼這個「2級分組因素」錯誤繼續發生。 – asshah4