Преобразование данных-данных в одном столбце в несколько столбцов - PullRequest
2 голосов
/ 24 марта 2012

Я новый пользователь R, и у меня возникла следующая проблема:

У меня есть данные в двух столбцах. Первый столбец содержит маркеры, а второй столбец содержит генотипы. Каждый генотип имеет 4 маркера. Таким образом, у меня в первом столбце 4 раза указано название генотипа 1 и соответствующие 4 маркера, затем следует генотип 2 с точно такими же 4 маркерами и так далее. Но я хочу, чтобы маркеры в одном столбце и генотипы в каждом отдельном столбце, чтобы я мог сравнить маркеры по генотипам. Я понятия не имею, как я мог это сделать.

У 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 Ответ

1 голос
/ 30 августа 2012

Вы хотите что-то вроде 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...