Функция t для транспонирования фрейма данных дает неправильные значения

У меня есть файл .tsv, который я загружаю в R с правильными параметрами. Это фрейм данных, который я хочу транспонировать (вот объяснение: https://www.dataanalytics.org.uk/rotating-or-transposing-r-objects/). Кадр данных:

GCA_910579985.1_MGBC115109_genomic_prkk
OG0000000                                      20
OG0000001                                       9
OG0000002                                      13
OG0000003                                       6
OG0000004                                      14
OG0000005                                       4
GCA_910578415.1_MGBC110107_genomic_prkk
OG0000000                                      15
OG0000001                                       6
OG0000002                                       8
OG0000003                                       5
OG0000004                                       3
OG0000005                                       3

Я использую t-функцию для этой цели:

tdata<-t(data)

Я уже заставляю переменные данные помещать во фрейм данных и в матрицу только для проверки Затем возникает ошибка, потому что вся матрица становится 0, 1 и 2

     OG0000000       OG0000001       OG0000002       OG0000003       OG0000004       OG0000005
GCA_910579985.1_MGBC115109_genomic_prkk 0       0       0       1       1       0
GCA_910578415.1_MGBC110107_genomic_prkk 1       1       1       0       0       2

Это неправильно, потому что исходные значения меняются, например, это мой ожидаемый результат:

     OG0000000       OG0000001       OG0000002       OG0000003       OG0000004       OG0000005
GCA_910579985.1_MGBC115109_genomic_prkk 20       9       13       6       14       4
GCA_910578415.1_MGBC110107_genomic_prkk 15       6       8       5       3       3

Итак, ясно, что здесь функция меняет исходные значения. Любая идея или комментарий?

Пожалуйста, опубликуйте свои примеры данных таким образом, чтобы их можно было легко скопировать, вставить и с ними можно было работать. Например, вы можете ввести свой фрейм данных в dput() и опубликовать вывод.

rjen 22.04.2022 22:32
3 метода стилизации элементов HTML
3 метода стилизации элементов HTML
Когда дело доходит до применения какого-либо стиля к нашему HTML, существует три подхода: встроенный, внутренний и внешний. Предпочтительным обычно...
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
0
1
25
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Во-первых, пожалуйста, всегда делайте свои примеры данных легко доступными для других, например. вставка вывода dput(your_data). Ваши данные в виде кадра данных дф таковы:

df <- 
## output of dput
structure(list(ID = c("OG0000000", "OG0000001", "OG0000002", 
"OG0000003", "OG0000004", "OG0000005"), GCA_910579985.1_MGBC115109_genomic_prkk = c(15L, 6L, 8L, 5L, 3L, 3L), GCA_910578415.1_MGBC110107_genomic_prkk = c(20L, 
9L, 13L, 6L, 14L, 4L)), class = "data.frame", row.names = c(NA, 
6L))

Преобразование типа из числовой в символ происходит при транспонировании t фрейма данных. Вы можете обойти это следующим образом (дф является вашим фреймом данных):

library(dplyr) ## provides the pipe operator %>%

df %>% as.matrix %>% t %>% as.data.frame

Хотя оператор конвейера %>% не нужен, я использовал его, чтобы подчеркнуть порядок преобразования. Это эквивалентно as.data.frame(t(as.matrix(df))).

Другие вопросы по теме