说说R语言的转置

Python09

说说R语言的转置,第1张

在群里看到了一个问题,他用R语言的转置函数 t() 对下面形式的数据进行了转置

转置之后的数据结构如下

他发现转置之后多了一行,也就是有了geneid这一行,和他预期的不符合。按照预期,geneid这一行应该是成为列名,而不是作为输出的第一行。那么,为什么会出现这个情况呢?这就需要从 t() 这个函数说起。

使用 ?t ,你会得到关于这个函数的函数说明。在函数的Detials部分中,有这样一段

即,数据框会先用 as.matrix() 转成矩阵格式,然后再引用 t() ,最终你对一个数据框使用 t() 函数时,你会得到一个矩阵,而非原先的data.frame.

举个例子:

因为矩阵要求存放的内容是同一种数据类型,对于输入的数据框而言,一般都会有字符串,数值这些,那么最终都会被转成字符串。

对于最开始的问题而言,因为原先的数据框的第一列是字符串,那么自然而然会把所有的数据都变成字符串,然后把第一列变成第一行。而如果要实现他真正的目的,需要先将第第一行变成行名,然后删掉第一行在转置,也就是

结果就是先保证原来的数据框里面都是数值数据,而不是让第一列充当行名。

延伸一下,对于超过2维的数组,我们要用到 aperm 函数才能对数据进行转置。当然,超过二维的转置,你甚至都无法直观感受到这是一个什么过程。

在进行 t 检验之前让我们先看看它的定义: t 检验法就是在假设检验时利用 t 分布 进行概率计算的检验方法。那问题来了,什么是 t 分布呢?

所以我们在进行 t 检验之前,应该对数据进行 正态性检验 以及 方差齐性检验 。

  t  检验可以分为单样本  t  检验和双样本  t  检验(见下图)。

单样本  t  检验步骤如下。

1. 提出假设

2. 计算 t  

3. 统计推断

看看R的结果:

①正态性检验结果

②  t  检验结果

p=0.3738>0.05,所以拒绝Ho,接受HA。

1.  提出假设

2.  计算  t

其中:

3.  统计推断

①方差齐性检验结果

②  t  检验结果

p-value = 0.07238>0.05,所以不能否定Ho。

步骤及算法 

1. 提出假设

2.  计算 t’

其中:

3.  统计推断

t  检验结果

p-value = 0.07238>0.05,所以不能否定Ho。

1.提出假设

2.计算 t

其中

3. 统计推断

#配对两样本T检验

t检验结果:

p-value = 2.548e-05 <0.01,所以否定Ho,接受HA。

[1]. 学生 t - 分布 (Wikipedia)

R语言t数据转置中一个简单的小问题,不注意就会犯错。

我有一个数据框如下:

此时,需要重新转换为数据框,即:

data.frame(t(df))