我有一个逗号分隔的数据集.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
...等
答案 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