Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/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检验中提取每行的p值_R - Fatal编程技术网

R、 从t检验中提取每行的p值

R、 从t检验中提取每行的p值,r,R,我试图对每一行进行t检验,然后提取p值进行绘图。作为参考,我发现了这篇老帖子: 以下是我的片段: > pVal143<-apply(mRNA143.data, 1, t.test)$p.value 使用原始数据集“c007”进行更新(我需要比较“C”值和H值中的p值) 一种解决方案是,您必须手动指定哪些列属于每个组以进行比较: # example data df = read.table(text = " C1 C2 C3 C4 C5

我试图对每一行进行t检验,然后提取p值进行绘图。作为参考,我发现了这篇老帖子:

以下是我的片段:

> pVal143<-apply(mRNA143.data, 1, t.test)$p.value
使用原始数据集“c007”进行更新(我需要比较“C”值和H值中的p值)


一种解决方案是,您必须手动指定哪些列属于每个组以进行比较:

# example data
df = read.table(text = "
C1       C2      C3     C4       C5     C6     H1    H2 H3  H4  H5  H6
8.57345 8.45938 8.68941 8.35913 8.48177 8.44560 8.40986 8.59392 8.46562 8.07999 8.22759 8.41817
8.32595 8.19273 8.10708 8.48156 7.99014 8.24859 8.78216 8.59592 8.48299 8.52647 8.34797 8.38534
", header=T)

library(tidyverse)

df %>%
  rowwise() %>%
  mutate(pval = t.test(c(C1,C2,C3,C4,C5,C6),
                       c(H1,H2,H3,H4,H5,H6))$p.value) %>%
  ungroup()

# # A tibble: 2 x 13
#      C1    C2    C3    C4    C5    C6    H1    H2    H3    H4    H5    H6   pval
#   <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>  <dbl>
# 1  8.57  8.46  8.69  8.36  8.48  8.45  8.41  8.59  8.47  8.08  8.23  8.42 0.161 
# 2  8.33  8.19  8.11  8.48  7.99  8.25  8.78  8.60  8.48  8.53  8.35  8.39 0.0110
#示例数据
df=读取。表格(文本=”
C1 C2 C3 C4 C5 C6 H1 H2 H3 H4 H5 H6
8.57345 8.45938 8.68941 8.35913 8.48177 8.44560 8.40986 8.59392 8.46562 8.07999 8.22759 8.41817
8.32595 8.19273 8.10708 8.48156 7.99014 8.24859 8.78216 8.59592 8.48299 8.52647 8.34797 8.38534
“,页眉=T)
图书馆(tidyverse)
df%>%
行()
突变(pval=t.试验(c(C1,C2,C3,C4,C5,C6),
c(H1、H2、H3、H4、H5、H6))$p.value)%>%
解组()
##tibble:2 x 13
#C1 C2 C3 C4 C5 C6 H1 H2 H3 H4 H5 H6 pval
#                
# 1  8.57  8.46  8.69  8.36  8.48  8.45  8.41  8.59  8.47  8.08  8.23  8.42 0.161 
# 2  8.33  8.19  8.11  8.48  7.99  8.25  8.78  8.60  8.48  8.53  8.35  8.39 0.0110
另一种解决方案是重塑数据,从每列的第一个字母创建两个组:

df %>%
  mutate(id = row_number()) %>%                 # add row id
  gather(key, value, -id) %>%                   # reshape dataset
  mutate(key = substr(key,1,1)) %>%             # create a group column from first letter (will be used for the t.test comparison)
  group_by(id) %>%                              # for each row
  summarise(pval = t.test(value ~ key)$p.value) # get p value 

# # A tibble: 2 x 2
#      id   pval
#   <int>  <dbl>
# 1     1 0.161 
# 2     2 0.0110
df%>%
mutate(id=row_number())%>%#添加行id
聚集(键,值,-id)%>%#重塑数据集
mutate(key=substr(key,1,1))%>%#从第一个字母创建一个组列(将用于t检验比较)
每行按(id)%>%分组
总结(pval=t.test(value~key)$p.value)#获取p值
##tibble:2x2
#id pval
#     
# 1     1 0.161 
# 2     2 0.0110

请在您的问题中添加
mRNA143.数据的样本
,以使您的问题重现。最好使用
dput(mRNA143.data)
。您也问过类似的问题。每组只进行一次观察的t检验(我假设你在本例中会尝试这样做)可能不会很好(参见维基百科上的t检验,为什么理论上这是一个否定)。基本上,您要做的是
t.test(x=8.224342,y=8.520142)
。上面是mRNA143.data.的示例,两列,143行(我只包括5行)。不管您有多少行,因为您试图为每行获取一个p值,这是不可能的。t检验需要“理解”数据的分布,两组比较各得1分没有意义。比较一组行或比较两列才有意义。您提供的链接使用了
t.test(1:10,7:20)
,它将一组10个值(1:10)与一组14个值(7:20)进行比较。正如@RomanLuštrik所说,您需要更多的观察。提示:
t.test
可以用length(x)==length(y)==2.我能够执行你的代码-非常感谢:
>pvals.007%+行方式()%>%+变异(pval=t.test(c(C1,C2,C3,C4,C5,C6),+c(H1,H2,H3,H4,H6))$p.value)%>%+ungroup()>绘图(pvals.007)
。当我绘制它时,我期望每行的p值的散点图(比较C1-6和H1-6),但是我得到143个小垂直标记?我也无法创建柱状图,因为我遇到了一个错误:“x”必须是数字?
pvals.007
是一个数据帧,而不是(143)个p值的向量。请尝试使用
pvals.007$pval
,因为这是存储所有p值的列。非常感谢-我非常感谢!我会将您的回答标记为“已回答”“但我没有声誉点。强硬的人群:-)别担心。关键是要了解将来在类似情况下可以使用的东西:)我还尝试运行一个t.test variances=FALSE的版本,对于代码中的mutate步骤,我尝试了以下操作,但得到了一个错误:
mutate(pval=t.test(var.equal=FALSE)(c(C1,C2,C3,C4,C5,C6),
# example data
df = read.table(text = "
C1       C2      C3     C4       C5     C6     H1    H2 H3  H4  H5  H6
8.57345 8.45938 8.68941 8.35913 8.48177 8.44560 8.40986 8.59392 8.46562 8.07999 8.22759 8.41817
8.32595 8.19273 8.10708 8.48156 7.99014 8.24859 8.78216 8.59592 8.48299 8.52647 8.34797 8.38534
", header=T)

library(tidyverse)

df %>%
  rowwise() %>%
  mutate(pval = t.test(c(C1,C2,C3,C4,C5,C6),
                       c(H1,H2,H3,H4,H5,H6))$p.value) %>%
  ungroup()

# # A tibble: 2 x 13
#      C1    C2    C3    C4    C5    C6    H1    H2    H3    H4    H5    H6   pval
#   <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>  <dbl>
# 1  8.57  8.46  8.69  8.36  8.48  8.45  8.41  8.59  8.47  8.08  8.23  8.42 0.161 
# 2  8.33  8.19  8.11  8.48  7.99  8.25  8.78  8.60  8.48  8.53  8.35  8.39 0.0110
df %>%
  mutate(id = row_number()) %>%                 # add row id
  gather(key, value, -id) %>%                   # reshape dataset
  mutate(key = substr(key,1,1)) %>%             # create a group column from first letter (will be used for the t.test comparison)
  group_by(id) %>%                              # for each row
  summarise(pval = t.test(value ~ key)$p.value) # get p value 

# # A tibble: 2 x 2
#      id   pval
#   <int>  <dbl>
# 1     1 0.161 
# 2     2 0.0110