ddplyは出力としてデータフレームを返します。私があなたの質問を正しく読んでいると仮定すると、それはあなたが探しているものではありません。データの一連のサブセットを使用して一連のt検定を実行したいので、実際のタスクはそれらのサブセットのリストをコンパイルすることだけだと思います。それらを取得したら、lapply()などの関数を使用して、リスト内の各サブセットに対してt検定を実行できます。これが最も洗練された解決策ではないと確信していますが、1つのアプローチは、次のような関数を使用して、色の一意のペアのリストを作成することです。
get.pairs <- function(v){
l <- length(v)
n <- sum(1:l-1)
a <- vector("list",n)
j = 1
k = 2
for(i in 1:n){
a[[i]] <- c(v[j],v[k])
if(k < l){
k <- k + 1
} else {
j = j + 1
k = j + 1
}
}
return(a)
}
これで、その関数を使用して、一意の色のペアのリストを取得できます。
> (color.pairs <- get.pairs(levels(diam$color))))
[[1]]
[1] "D" "E"
[[2]]
[1] "D" "F"
...
[[21]]
[1] "I" "J"
これで、これらの各リストを使用して、次のように、データフレームのサブセットでt.test(または必要なもの)を実行できます。
> t.test(price~cut,data=diam[diam$color %in% color.pairs[[1]],])
Welch Two Sample t-test
data: price by cut
t = 8.1594, df = 427.272, p-value = 3.801e-15
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
1008.014 1647.768
sample estimates:
mean in group Fair mean in group Ideal
3938.711 2610.820
次に、lapply()を使用して、色のペアのリスト内の各サブセットに対してテストを実行します。
> lapply(color.pairs,function(x) t.test(price~cut,data=diam[diam$color %in% x,]))
[[1]]
Welch Two Sample t-test
data: price by cut
t = 8.1594, df = 427.272, p-value = 3.801e-15
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
1008.014 1647.768
sample estimates:
mean in group Fair mean in group Ideal
3938.711 2610.820
...
[[21]]
Welch Two Sample t-test
data: price by cut
t = 0.8813, df = 375.996, p-value = 0.3787
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-260.0170 682.3882
sample estimates:
mean in group Fair mean in group Ideal
4802.912 4591.726