Правильное чтение «перевернутой» таблицы в data.frame - PullRequest
5 голосов
/ 12 августа 2011

У меня есть файл с разделителями табуляции, который выглядит следующим образом:

AG-AG   AG-CA   AT-AA   AT-AC   AT-AG   ...
0.0142180094786 0.009478672985781   0.0142180094786 0.4218009478672 ...

Когда я читаю это в R, используя read.table, я получаю:

nc.tab <- read.table("./percent_splice_pair.tab", sep="\t", header=TRUE)
     AG.AG       AG.CA      AT.AA     AT.AC      AT.AG   ... 
1 0.01421801 0.009478673 0.01421801 0.4218009 0.03317536 ...

Мне немного неловко, потому что я гораздо больше привык работать с данными, если это так:

splice.pair    counts
AG.AG          0.01421801
AG.CA          0.009478673
AT.AA          0.01421801
AT.AG          0.03317536
...            ...

Пока мои попытки приведения таблицы к фрейму данных (используя data.frame()) привели к очень странным результатам. Я не могу понять, как получить каждую строку таблицы, которую я имею, в виде простого списка, который я затем могу использовать в качестве столбцов для фрейма данных. colnames(nc.tab) работает для заголовков, но такие вещи, как nc.tab[1,], просто дайте мне таблицу + заголовки снова. Я что-то упускаю из виду?

- изменить -

Хотя @ ответ Андри дал мне необходимую data.frame, мне пришлось проделать дополнительную работу, чтобы привести значения счетчиков в числовые значения, чтобы они правильно работали в ggplot:

nc.tab <- read.table("./percent_splice_pair.tab", header=FALSE, sep="\t")
nc.mat <- t(as.matrix(nc.tab))
sp <- as.character(nc.tab[,2])
c <- as.numeric(as.character(nc.tab[,2]))
nc.dat <- data.frame(Splice.Pair=sp, count=c)

   Splice.Pair       count
1        AG-AG 0.014218009
2        AG-CA 0.009478673
3        AT-AA 0.014218009
4        AT-AC 0.421800948
5        AT-AG 0.033175355

1 Ответ

10 голосов
/ 12 августа 2011

Вам необходимо следующее, чтобы прочитать и изменить ваши данные так, как вы хотите:

  • используйте read.table с параметром header=FALSE
  • затем транспонируйте данные с помощью функции t()
  • переименовать столбцы

Вот код:

x <- read.table(..., header=FALSE)
df <- as.data.frame(t(x))
names(df) <- c("splice.pair", "counts")
df

   splice.pair            counts
V1       AG-AG   0.0142180094786
V2       AG-CA 0.009478672985781
V3       AT-AA   0.0142180094786
V4       AT-AC   0.4218009478672
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...