我查看了相关的dplyr问题,R文档,并尝试对我认为的语法误解进行排序。
以下是反映我的数据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 :(得分:1)
你不想为此使用dplyr。您想要适合线性模型。
mod <- lm(xvar ~ binary*bin, data=df)
anova(mod)
有关系数,P值和平方和的含义的进一步讨论,请考虑询问stats.SE。
答案 1 :(得分:1)
我想我已经解决了这个问题。
只要t.test中没有足够的数据,“分组因子必须正好有2个级别”。我只是假设我的原始数据集很大,足以避免遇到这个问题。
当我使样本数据更加健壮时,错误就消失了。
很抱歉浪费时间,谢谢你的帮助!