将一列中的数据数据转换为多列

时间:2012-03-24 16:13:02

标签: r

我是新用户,我遇到以下问题:

我有两列数据。第一列包含标记,第二列包含基因型。每种基因型都有4个标记。因此,我在第一列中有4倍基因型1的名称和4个标记,然后基因型2跟随完全相同的4个标记,依此类推。但是我希望一列中的标记和每一个单独的列中的genoytpes,所以我可以比较genoytypes中的标记。我不知道我怎么做。

G1有4个标记,G2有4个标记等:

-Marker Genotype
M1  G1
M2  G1
M3  G1
M4  G1
M1  G2
M2  G2
M3  G2
M4  G2
M1  G3
M2  G3
M3  G3
M4  G3

我希望R对此:

Marker  G1  G2  G3
M1  AA  AA  GG
M2  TT  GG  CC
M3  GG  AA  AA
M4  CC  TT  GG

将每个基因型放在一列中,以便比较标记非常容易。

有人明白这是如何运作的吗?

非常感谢提前。 玛丽

1 个答案:

答案 0 :(得分:1)

你想要某种cast。例如

require(reshape2)

indata <- data.frame(  Marker = rep(c("M1","M2","M3","M4"), 3),
     Genotype = rep(c("G1","G2","G3"), each=4),
     value = c("AA","TT","GG","CC","AA","GG","AA","TT","GG","CC","AA","GG") )

outdata <- dcast(indata, Marker ~ Genotype)

将带你从

> indata
   Marker Genotype value
1      M1       G1    AA
2      M2       G1    TT
3      M3       G1    GG
4      M4       G1    CC
5      M1       G2    AA
6      M2       G2    GG
7      M3       G2    AA
8      M4       G2    TT
9      M1       G3    GG
10     M2       G3    CC
11     M3       G3    AA
12     M4       G3    GG

> outdata
  Marker G1 G2 G3
1     M1 AA AA GG
2     M2 TT GG CC
3     M3 GG AA AA
4     M4 CC TT GG