2013-09-11 2 views
0

У меня очень похожее сомнение в отношении моего последнего (Transform data frame into matrix with counts). Опять же, у меня есть файлы данные структурированы следующим образом:Преобразовать фрейм данных/матрицу в другую организованную матрицу

OTU1 PIA0 1120 
OTU2 PIA1 2 
OTU2 PIA3 6 
OTU2 PIA4 10 
OTU2 PIA5 1078 
OTU2 PIN1 24 
OTU2 PIN2 45 
OTU2 PIN3 261 
OTU2 PIN4 102 
OTU3 PIA0 16 
OTU3 PIA1 59 
OTU3 PIA2 27 
OTU3 PIA3 180 
OTU3 PIA4 200 
OTU3 PIA5 251 
OTU3 PIN0 36 
OTU3 PIN1 61 
OTU3 PIN2 156 
OTU3 PIN3 590 
OTU3 PIN4 277 
OTU4 PIA0 401 
OTU4 PIN0 2 

Но теперь я хочу, чтобы создать файл, который сочетает в себе отсчеты из трех колонок, более или менее, как это:

PIA0 1120 OTU1 
PIA0 16 OTU3 
PIA0 401 OTU4 
PIA1 2 OTU2 
PIA1 59 OTU3 
PIA2 27 OTU3 
PIA3 6 OTU2 
PIA3 180 OTU3 
PIA4 10 OTU2 
PIA4 200 OTU3 
PIA5 1078 OTU2 
PIA5 251 OTU3 
PIN0 36 OTU3 
PIN0 2 OTU4 
PIN1 24 OTU2 
PIN1 61 OTU3 
PIN2 45 OTU2 
PIN2 156 OTU3 
PIN3 261 OTU2 
PIN3 590 OTU3 
PIN4 102 OTU2 
PIN4 277 OTU3 

Я имею в виду то, что Мне нужно сделать новую координацию данных, оставив первый столбец для данных из второго столбца (который теперь будет организован), а два других - для данных из третьих и, наконец, первых столбцов.

Можно ли достичь этого с помощью R-пакета 'reshape2' снова? Может быть, использовать «dcast» или «acast»?

Цель состоит в том, чтобы построить матрицу, подобную второй в примере, чтобы я мог запустить PHYLOCOM program с этими данными.

Еще раз спасибо!

+1

Что вы пытаетесь? Вы действительно просто спрашиваете, как изменить порядок столбцов и как сортировать по данному столбцу? – A5C1D2H2I1M1N2O1R2T1

+0

Идея состоит в том, чтобы заставить ее работать в PHYLOCOM как файл 'sample'. Я попытался организовать его, а затем запустить программу, поэтому я полагаю, что мой способ сделать это не совсем корректен. –

ответ

1
x <- read.table(textConnection(" 
OTU1 PIA0 1120 
OTU2 PIA1 2 
OTU2 PIA3 6 
OTU2 PIA4 10 
OTU2 PIA5 1078 
OTU2 PIN1 24 
OTU2 PIN2 45 
OTU2 PIN3 261 
OTU2 PIN4 102 
OTU3 PIA0 16 
OTU3 PIA1 59 
OTU3 PIA2 27 
OTU3 PIA3 180 
OTU3 PIA4 200 
OTU3 PIA5 251 
OTU3 PIN0 36 
OTU3 PIN1 61 
OTU3 PIN2 156 
OTU3 PIN3 590 
OTU3 PIN4 277 
OTU4 PIA0 401 
OTU4 PIN0 2")) 

y <- x[with(x, order(V2, V1)), c(2, 3, 1)] 
head(y) 
    V2 V3 V1 
1 PIA0 1120 OTU1 
10 PIA0 16 OTU3 
21 PIA0 401 OTU4 
2 PIA1 2 OTU2 
11 PIA1 59 OTU3 
12 PIA2 27 OTU3 
Смежные вопросы