dplyr

时间:2017-09-24 19:45:15

标签: r dplyr grouping

我查看了相关的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对象运行了相同的代码,它运行得很好。数据时间是一个因素和一切。

有什么想法?我也很感激批评如何改进提出这个问题的方式。

2 个答案:

答案 0 :(得分:1)

你不想为此使用dplyr。您想要适合线性模型

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

有关系数,P值和平方和的含义的进一步讨论,请考虑询问stats.SE。

答案 1 :(得分:1)

我想我已经解决了这个问题。

只要t.test中没有足够的数据,

“分组因子必须正好有2个级别”。我只是假设我的原始数据集很大,足以避免遇到这个问题。

当我使样本数据更加健壮时,错误就消失了。

很抱歉浪费时间,谢谢你的帮助!

相关问题