如何根据一列的成对相互作用(即因子)对数据进行成对t检验?

时间:2013-11-01 00:22:04

标签: r statistics

我有一个逗号分隔的数据集.csv(here)。在这个数据集中,我测量了数据(“值”列),该数据由测量站点(“站点”)和采集日期计算。我要做的是对每个位置组合(“INLET EAST”/“SF EAST 1”,“INLET EAST”/“OUTLET EAST”等)的数据值进行成对t检验。我手动运行这些迭代没有问题,但我不知道如何告诉t.test函数如何根据常见的Date值配对每组数据。任何人有任何指针?我不会反对任何关于如何在“站点”因素中简化迭代t.test过程的想法。感谢您在我来这几个月的所有帮助。

对于链接不起作用的人,我的数据具有以下结构:

Date     Site        Slope    Location    Season    variable    value
15628    Inlet East  H        Inlet       W         TKN         1.92
15694    Inlet East  H        Inlet       W         TKN         0.98
15628    Outlet East L        Outlet      W         TKN         0.93

...等

2 个答案:

答案 0 :(得分:2)

以下是如何为每种虹膜数据集运行t检验的示例

library(plyr)
foo <- function(df) {
  t.test(df$Sepal.Length, df$Sepal.Width, data = df)
}
models <- dlply(iris, .(Species), foo)
models

答案 1 :(得分:0)

这是一个函数形式的提议,我将你的文件data.csv读作“myData”。您可以根据需要更改自变量的名称(或编号)。在您的情况下,我将改进功能添加控件以正常分布分组数据。

foo <- function(dataFrame, dataDepV, dataIndepV){
  if(is.character(dataDepV))   dataDepV   <- which(names(dataFrame)==dataDepV)
  if(is.character(dataIndepV)) dataIndepV <- which(names(dataFrame)==dataIndepV)
  allFactors <- unique(dataFrame[, dataIndepV])

  foo2 <- function(x)
  {
    group1 <- dataFrame[dataFrame[, dataIndepV] == x[1], dataDepV]
    group2 <- dataFrame[dataFrame[, dataIndepV] == x[2], dataDepV]
    myResult <- t.test(group1, group2)
    return(myResult)
  }

  myEndResult           <- combn(allFactors, 2, foo2)
  rownames(myEndResult) <- c("statistic","parameter","p.value","conf.int","estimate",
                             "null.value","alternative","method","data.name")
  colnames(myEndResult) <- combn(allFactors, 2, function(x) paste(x[1],"vs.",x[2]))
  return(myEndResult)

}

A <- foo(dataFrame=myData, dataDepV="value", dataIndepV="Site")

View(A) # should include the result dataframe that you wanted

View(A)