Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R:在数据帧或矩阵中使用t.test函数_R_Dataframe - Fatal编程技术网

R:在数据帧或矩阵中使用t.test函数

R:在数据帧或矩阵中使用t.test函数,r,dataframe,R,Dataframe,我想使用t.test函数来比较数据帧中存储的值组。假设我的数据框架有两列:“组”和“结果”以及40行。“结果”列包含我要比较的值,“组”列表示值被划分的组:例如,4个组(a、b、c、d),每组10个值 我如何表明我只想测试属于a组的值与属于b组的值 或者,是否有一种简单的方法将属于a组的值提取到向量(我们称之为“vecta”)中,以便随意比较向量 提前谢谢! Seb您问:“我如何表明我只想测试属于a组的值和属于b组的值?” 假设您的数据帧被称为df。要将a组与b组进行t检验比较,您可以使用例如:

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

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

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

提前谢谢! Seb

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

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

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”)中,以便随意比较向量


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,result[group==“a”])
只会给出组a的结果)。

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

以下是一些示例数据:

mydf <- data.frame(
  group = rep(letters[1:4], each = 10),
  result = c(1:10, 5:14, 11:20, 15:24)
)
mydf
至于提取单独的向量,我认为向量的
列表
可能更方便,您可以使用
拆分

x <- split(mydf$result, mydf$group)

x欢迎来到Stack Overflow。发布一些示例数据,你很可能会惊讶于有人能够以更快的速度回答你认为有用的答案。你可以找到一些提示来完成Ananda刚才说的+1。一个建议:我将使用
group%in%“a“
而不是
=
,以避免选择具有NA组值的记录。例如:
group@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(as.character(unique(mydf$group)), 2, 
      FUN = function(y) t.test(result ~ group, 
                               mydf[mydf$group %in% y ,]), 
      simplify = FALSE)
x <- split(mydf$result, mydf$group)
with(subset(df, group %in% c("a", "b")),
     t.test(value ~ factor(group))
#
# df - your data.frame
#