我想使用t.test函数来比较存储在数据帧中的值组。假设我的数据框有2列:“group”和“result”以及40行。 “result”列包含我想要比较的值,“group”列表示值被分割的组:例如4个组(a,b,c,d),每个值为10个值。
如何指示我只想测试属于组a的值与属于组b的值?
或者,是否有一种简单的方法可以将属于a组的值提取到一个向量中(让我们称之为“vecta”),以便随意比较这些向量?
提前致谢! SEB
答案 0 :(得分:6)
您问:“我如何表明我只想测试属于组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
答案 1 :(得分: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的结果)。
答案 2 :(得分: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)
至于提取单独的向量,我认为list
向量可能更方便,您可以使用split
:
x <- split(mydf$result, mydf$group)
答案 3 :(得分:1)
with(subset(df, group %in% c("a", "b")),
t.test(value ~ factor(group))
#
# df - your data.frame
#