我想使用t.test函数比较存储在数据帧中的值组。假设我的数据框有2列:“组”和“结果”和40行。 “结果”列包含我想要比较的值,“组”列表示值被分成的组:例如4个组(a,b,c,d)各有10个值。R:在数据帧或矩阵中使用t.test函数
如何表明我只想测试属于组a的值与属于组b的值?
另外,是否有一种简单的方法将属于组a的值提取到矢量中(我们称之为“vecta”),以便随意比较矢量?
在此先感谢! Seb
我想使用t.test函数比较存储在数据帧中的值组。假设我的数据框有2列:“组”和“结果”和40行。 “结果”列包含我想要比较的值,“组”列表示值被分成的组:例如4个组(a,b,c,d)各有10个值。R:在数据帧或矩阵中使用t.test函数
如何表明我只想测试属于组a的值与属于组b的值?
另外,是否有一种简单的方法将属于组a的值提取到矢量中(我们称之为“vecta”),以便随意比较矢量?
在此先感谢! Seb
您问:“我如何表明我只想测试属于组a的值与属于组b的值?”
假设你的数据帧被称为df
。与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
谢谢,那是正是我一直在寻找这整个下午:) – user2617763
有上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的结果)。
+1。一个建议:我会使用'%',而不是'=='来避免选择具有NA组值的记录。例如:'group < - c(“a”,“b”,NA); group [group ==“a”];组[组%[%]“a”]'。当这种情况不太可能发生时,这是一种情况,但使用'%in%'作为我的默认值可帮助我避免多年来的许多麻烦。 –
@MattParker +1这是一个很好的观点(尽管NAs不会伤害这里的例子)。我更喜欢'=='的原因是鼓励使用帮助中的例子中的信息,这就是相关示例在'?t.test'下完成的方式。 –
以下不是“随意”,而是自动计算所有“组”变量对。
下面是一些样本数据:
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)
with(subset(df, group %in% c("a", "b")),
t.test(value ~ factor(group))
#
# df - your data.frame
#
欢迎堆栈溢出。发布一些样本数据,你很可能会惊讶于有人能够更迅速地回复你找到有用的答案。 – A5C1D2H2I1M1N2O1R2T1
[Here](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)你可以找到一些提示来完成Ananda刚才所说的 –