2

我想使用 t.test 函数来比较存储在数据框中的值组。假设我的数据框有 2 列:“组”和“结果”以及 40 行。“结果”列包含我要比较的值,“组”列表示这些值被划分的组:例如 4 组 (a,b,c,d),每组 10 个值。

如何表明我只想测试属于组 a 的值与属于组 b 的值?

或者,是否有一种简单的方法可以将属于组 a 的值提取到向量中(我们称之为“vecta”)以便随意比较向量?

提前致谢 !塞布

4

4 回答 4

8

您问:“我如何表明我只想测试属于组 a 的值与属于组 b 的值?”

假设您的数据框被称为df. 要将组 a 与组 b 与 t.test 进行比较,您可以使用例如:

t.test(df$result[df$group=="a"], df$result[df$group=="b"])
# or
with(df, t.test(result[group=="a"], result[group=="b"]))
# or, fo rexample
t.test(result~group, data=subset(df, group %in% c("a", "b")))

所有方法都应该有效,但未经测试,因为您没有发布任何示例数据:P

“或者,是否有一种简单的方法可以将属于组 a 的值提取到一个向量中(我们称之为“vecta”),以便随意比较向量?”

是的,

df$value[def$group=="a"]  # result is a vector
于 2013-09-26T15:30:02.383 回答
2

在帮助结束时有一个针对您的情况的示例t.test

## Classical example: Student's sleep data
plot(extra ~ group, data = sleep)
## Traditional interface
with(sleep, t.test(extra[group == 1], extra[group == 2]))
## Formula interface
t.test(extra ~ group, data = sleep)

当您有两个组时,第二种形式(公式界面)最简单;你有 4 个。

你可以做到的一种方法(假设你的数据框被调用yourdata)是

with(yourdata, t.test(result[group == "a"], result[group == "b"]))

至于提取组指示符取特定值的值,执行此操作的方法在上述帮助中的第一种形式中给出(在您的情况下with(yourdata, result[group=="a"]),只会为您提供组 a 的结果)。

于 2013-09-26T15:30:58.193 回答
1

以下不是“随意”,而是自动计算所有“组”变量对。

以下是一些示例数据:

mydf <- data.frame(
  group = rep(letters[1:4], each = 10),
  result = c(1:10, 5:14, 11:20, 15:24)
)
mydf

您可以使用combn创建每个组的“对”来使用t.test

combn(as.character(unique(mydf$group)), 2, 
      FUN = function(y) t.test(result ~ group, 
                               mydf[mydf$group %in% y ,]), 
      simplify = FALSE)

至于提取单独的向量,我认为 a listof 向量可能更方便,您可以使用split

x <- split(mydf$result, mydf$group)
于 2013-09-26T15:45:47.470 回答
1
with(subset(df, group %in% c("a", "b")),
     t.test(value ~ factor(group))
#
# df - your data.frame
#
于 2013-09-26T20:01:17.980 回答