Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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-student循环测试?_R_Loops_Statistics - Fatal编程技术网

如何在r中进行t-student循环测试?

如何在r中进行t-student循环测试?,r,loops,statistics,R,Loops,Statistics,我是R的新手,我想做的事情很简单,但我需要帮助 我有一个看起来像上面的数据库;其中,蛋白质的spot number=“name”,grupo=组I和组II,APF=荧光读数。 我想通过比较第一组和第二组,对每种蛋白质做一个学生测试,但是在一个循环中 在上面的数据库中只有1个蛋白质(147个),但我的真实数据库中有444个蛋白质 您可以使用和my package在每组中执行t.测试。如果您的数据存储在名为dat的数据框中,您将执行以下操作: library(dplyr) library(broo

我是R的新手,我想做的事情很简单,但我需要帮助

我有一个看起来像上面的数据库;其中,蛋白质的spot number=“name”,grupo=组I和组II,APF=荧光读数。 我想通过比较第一组和第二组,对每种蛋白质做一个学生测试,但是在一个循环中


在上面的数据库中只有1个蛋白质(147个),但我的真实数据库中有444个蛋白质

您可以使用和my package在每组中执行t.测试。如果您的数据存储在名为
dat
的数据框中,您将执行以下操作:

library(dplyr)
library(broom)

results <- dat %>%
    group_by(Spot.number) %>%
    do(tidy(t.test(APF ~ grupo, .)))
库(dplyr)
图书馆(扫帚)
结果%
分组依据(点号)%>%
do(整洁(t.试验(APF~grupo,))
这是通过对由
Spot.number
定义的每组执行
t.test(APF~grupo,)
来实现的。扫帚中的
tidy
函数将其转换为一行数据帧,以便重新组合。
结果
数据框将包含每种蛋白质一行(
Spot.number
),列包括
估计
统计
p.value


有关dplyr和broom组合的更多信息,请参阅。

从一些虚假数据开始:

set.seed(0)
Spot.number <- rep(147:149, each=10)
grupo <- rep(rep(1:2, each=5), 3)
APF <- rnorm(30)
gel <- data.frame(Spot.number, grupo, APF)

> head(gel)
  Spot.number grupo        APF
1         147     1  2.1780699
2         147     1 -0.2609347
3         147     1 -1.6125236
4         147     1  1.7863384
5         147     1  2.0325473
6         147     2  0.6261739
或者只是

tests <- by(gel, gel$Spot.number, function(spot) t.test(APF ~ grupo, spot))
或置信区间

sapply(tests, "[[", "conf.int")
#           147       148        149
# [1,] -0.985218 -1.033815 -0.8748502
# [2,]  2.712395  1.066340  1.4240488

结果向量或矩阵已经有了
Spot.number
作为名称,这非常有用。

欢迎使用。考虑到您的数据位于一个名为
gel
的数据框中,请阅读:
lappy(split(gel,gel$Spot.number),function(Spot)t.test(APF~grupo,Spot))
谢谢您的回答。然而,对于所有的蛋白质,(我已经尝试了6开始,我得到了相同的估计(1,2)统计,p值,等等…所以有些东西可能丢失了!?我应该给一个更多的蛋白质的数据来测试它吗?@Inêsdinize你能编辑
dput(head(dat,100))的结果吗
进入您的答案?这将创建一个可复制的示例David Robinson,我的数据库出了问题…我修复了它,现在一切都正常了!也感谢您的帮助,但我仍然有相同的问题。每个蛋白质都有相同的p值!!您创建的数据库与我的数据库完全一样例如,当复制/通过脚本时,一切正常,但当我在数据库中使用它时,每个蛋白质都有相同的p值。所以“构造”有问题我的数据库…MOLX,我的数据库出了点问题…我修复了它,现在一切都正常了!谢谢你…救生员…@Inêsdining只是一个简短的提示:你的名字和代码表明你是母语为葡萄牙语的人。如果是真的,请找时间检查。:)
sapply(tests, "[[", "p.value")

#      147       148       149 
#0.2941609 0.9723856 0.5726007 
sapply(tests, "[[", "conf.int")
#           147       148        149
# [1,] -0.985218 -1.033815 -0.8748502
# [2,]  2.712395  1.066340  1.4240488