为类似的行

时间:2016-07-27 20:14:26

标签: r matrix dataframe formatting bioinformatics

我被困在如何解决问题。我有一个矩阵,格式如下:

Sequence      Position   Raw Binding (log ratio)
UC001AOZ.3      146     -0.746
UC001AOZ.3      147     -1.27
UC001AOZ.3      148     -1.66
UC001AOZ.3      149     -2.16
UC001AOZ.3      150     -2.08
...             ...      ...
UC222AOF.2     5000      1.22
UC222AOF.2      146     -1.12
UC222AOF.2      147     -1.41
...             ...      ...
UC222AOF.2     5000      5.13
...             ...      ...

第一列(序列)通过这些神秘的名称描述基因。第二列是人类基因组内的位置,第三列是指事件的值。

位置上升至5000,然后在146再次开始下一个基因(参见格式,第二个基因名称" UC222AOF.2")。总共有250个基因,4854个位置和各自的Raw Biding值。

我想获得146到5000之间所有Raw Binding(对数比)值的平均值。

一种可能性如下(值可能与上述不同):

            146      147     148     149     ...    5000
UC001AOZ.3  -0.746   -1.27   -1.66   -2.16   ...     1.22
UC222AOF.2  -1.12    -1.41   -1.31   -1.81   ...     5.13
UC002BW1.1  -0.112   -0.31   -0.51   -1.01   ...     1.01

我不是R常规但知道一些基础知识。提前谢谢!

1 个答案:

答案 0 :(得分:1)

reshape2包的dcast()函数可能有用。

library(reshape2)
df
#     Sequence Position Binding
# 1 UC001AOZ.3      146  -0.746
# 2 UC001AOZ.3      147  -1.270
# 3 UC001AOZ.3      148  -1.660
# 4 UC001AOZ.3      149  -2.160
# 5 UC001AOZ.3      150  -2.080
# 6 UC222AOF.2     5000   1.220
# 7 UC222AOF.2      146  -1.120
# 8 UC222AOF.2      147  -1.410

dcast(df, Sequence ~ Position, value.var = "Binding")
#     Sequence    146   147   148   149   150 5000
# 1 UC001AOZ.3 -0.746 -1.27 -1.66 -2.16 -2.08   NA
# 2 UC222AOF.2 -1.120 -1.41    NA    NA    NA 1.22

基本上,您将“位置”列“向上”调整为一组行,并告诉R使用“绑定”列中的值来填充新建的行。

来自http://seananderson.ca/images/dcast-illustration.png

http://seananderson.ca/2013/10/19/reshape.html是dcast()函数的绝佳直观表示。