dcast函数的问题(reshape2) - 三个变量组合

时间:2012-10-19 17:58:05

标签: r plyr reshape2

我正在使用reshape2包来塑造我的数据并将其用于t检验。对我来说,在单独的列中可视化数据更容易。我有三种治疗组合,其中“wat”嵌套在“spp”中,“ins”嵌套在水中。我的演示表包含3个响应变量,即“tyr”,“esc”和“esc_R”。我有兴趣看看ins如何影响响​​应 - > “spp”中的“tyr” - > B1,治疗“wat” - >高(只是一个例子)。

这是我的数据: demo.data

## Use orderBy function to sort data
library(doBy)
demo <- orderBy(~spp+wat+ins, data = demo)
## Create an unique data frame for a specific variable
df.bl.ins.1 <- demo[demo$spp == "Bl", c(1:3, 4)]
df.bl.ins.2 <- df.bl.ins.1[df.bl.ins.1$wat == "High", ]

然后我无法执行dcast功能。

df.bl.ins.tmp <- dcast(df.bl.ins.2, spp + wat ~ ins, value.var = "tyr")

我在以下主题中找到了有趣的信息

  1. Dason's suggestion - 与ToothGrowth演示数据集配合得非常好。不幸的是,当桌子有多次治疗(超过2次)时,解决方案并不简单。我同意Maiasaura的建议,即创建一个独特的变量是这个问题的关键。但是,我很难理解函数(x)在我的表中做什么或如何使用它。
  2. 非常感谢这方面的任何帮助。

    此外,如果您有其他建议在不操纵原始数据框(演示版)的情况下进行t检验,我会很高兴听到它。

    提前致谢。

    修改 对于“tyr”,这就是我所期待的。在以下格式中,我希望使用t检验比较“否”与“是”。

    spp wat ins No  Yes
    Bl  High    No  0.3036  0.1987
    Bl  High    No  0.2577  0.1112
    Bl  High    No  NA  0.199
    Bl  High    No  0.3299  0.1886
    Bl  High    No  0.3301  0.2332
    

1 个答案:

答案 0 :(得分:1)

也许我不明白你想要做什么,但我认为你可以直接对你的数据进行线性回归。通过这种方式,您可以对模型的系数是否为零进行t检验。我认为这可能就足够了,也可以用来梳理每个自变量的影响。这是一个例子:

summary(lm(tyr~spp+wat+ins,data=read.table('http://pastebin.com/raw.php?i=sR2MvBBA')))
Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept)  0.286386   0.016500  17.356  < 2e-16 ***
sppMan      -0.159514   0.015811 -10.089  1.3e-11 ***
watLow      -0.005501   0.015858  -0.347 0.730861    
insYes      -0.066741   0.015858  -4.209 0.000185 ***

这将使您只测试您在示例中显示的组:

t.test(tyr~ins,data=df[df$spp=='Bl' & df$wat=='High',])