我是R的新手,我想做的事情非常简单,但我需要帮助。
我有一个类似上面的数据库;其中斑点数=蛋白质的“名称”,grupo =组I和II,APF =荧光读数。 我想对每种蛋白质做一个tstudent测试,通过比较第一组和第二组,但是在一个循环中。
在上面的数据库中只有1种蛋白质(147),但我的真实数据库中我有444种蛋白质。
答案 0 :(得分:1)
您可以使用dplyr和我的broom包在每个组中执行t.test。如果您的数据存储在名为dat
的数据框中,您可以执行以下操作:
library(dplyr)
library(broom)
results <- dat %>%
group_by(Spot.number) %>%
do(tidy(t.test(APF ~ grupo, .)))
这可以通过t.test(APF ~ grupo, .)
定义的每个组执行Spot.number
来实现。扫帚的tidy
函数然后将其转换为单行数据帧,以便可以重新组合。然后results
数据框将包含每个蛋白质一行(Spot.number
),其中的列包括estimate
,statistic
和p.value
。
有关dplyr和扫帚组合的更多信息,请参阅this vignette。
答案 1 :(得分:1)
从一些假数据开始:
lapply
您可以使用gel
循环浏览Spot.number
的子集,按tests <- lapply(split(gel, gel$Spot.number), function(spot) t.test(APF ~ grupo, spot))
分隔:
tests <- by(gel, gel$Spot.number, function(spot) t.test(APF ~ grupo, spot))
或只是
sapply(tests, "[[", "p.value")
# 147 148 149
#0.2941609 0.9723856 0.5726007
然后你可以转到例如仅取p值:
sapply(tests, "[[", "conf.int")
# 147 148 149
# [1,] -0.985218 -1.033815 -0.8748502
# [2,] 2.712395 1.066340 1.4240488
或置信区间
Spot.number
结果向量或矩阵已经有- (void)peripheralManager:(CBPeripheralManager *)peripheral didReceiveWriteRequests:(NSArray *)requests
{
NSLog(@"PERIPHERAL: peripheralManager:%@ didReceiveWriteRequests:%@", peripheral, requests);
NSString * result = [[requests valueForKey:@"description"] componentsJoinedByString:@""];
_label.text = result;
}
作为名称,这可能非常有用。