перенести 250 000 строк в столбцы в R - PullRequest
0 голосов
/ 28 мая 2011

Я всегда транспонирую с помощью команды t (file) в R. Но я не работаю должным образом (вообще не выполняется) в файле больших данных (250000 строк и 200 столбцов).Любые идеи.

Мне нужно рассчитать корреляцию между 2-й строкой (PTBP1) со всеми другими строками (кроме 8 строк, включая заголовок).Для этого я перемещаю строки в столбцы, а затем использую функцию cor.

Но я обратил внимание на транспонирование fn.Любая помощь будет принята с благодарностью!

Я скопировал пример из одного поста в stackoverflow (Они также почти обсуждают ту же проблему, но, похоже, пока нет ответа!)

ID A B C D E F G H I [200 columns]
Row0$-1 0.08 0.47 0.94 0.33 0.08 0.93 0.72 0.51 0.55
Row02$1 0.37 0.87 0.72 0.96 0.20 0.55 0.35 0.73 0.44
Row03$ 0.19 0.71 0.52 0.73 0.03 0.18 0.13 0.13 0.30
Row04$- 0.08 0.77 0.89 0.12 0.39 0.18 0.74 0.61 0.57
Row05$- 0.09 0.60 0.73 0.65 0.43 0.21 0.27 0.52 0.60
Row06-$ 0.60 0.54 0.70 0.56 0.49 0.94 0.23 0.80 0.63
Row07$- 0.02 0.33 0.05 0.90 0.48 0.47 0.51 0.36 0.26
Row08$_ 0.34 0.96 0.37 0.06 0.20 0.14 0.84 0.28 0.47
........
250,000 rows

Ответы [ 2 ]

2 голосов
/ 28 мая 2011

Используйте матрицу вместо. Единственное преимущество кадра данных над матрицей - это возможность иметь разные классы в столбцах, и у вас явно нет такой ситуации, поскольку транспонированный кадр данных не может поддерживать такой результат.

0 голосов
/ 29 мая 2011

Я не понимаю, почему вы хотите транспонировать data.frame. Если вы просто используете cor, это не имеет значения, если ваши данные в строках или столбцах.
На самом деле, одним из основных преимуществ R является то, что ваши данные вписываются в классический шаблон строки-столбца, поскольку SPSS и другие программы требуют, чтобы данные были.

Существует множество способов соотнести первую строку со всеми другими строками (я не понимаю, какие строки вы хотите исключить). Один использует цикл (здесь этот цикл подразумевается при вызове одной из функций * apply family):

lapply(2:(dim(fn)[1]), function(x) cor(fn[1,],fn[x,]))

Обратите внимание, что я ожидаю, что ваш data.frame будет называться fn. Чтобы пропустить несколько строк, измените число 2 на желаемое. Кроме того, я бы, наверное, использовал vapply здесь.

Я надеюсь, что этот ответ направит вас в правильном направлении, то есть не стоит использовать t(), если он вам абсолютно не нужен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...