Как организовать мои данные для создания тепловой карты с использованием корреляционного или кластерного анализа (х должен быть числовой проблемой) - PullRequest
0 голосов
/ 04 ноября 2019

Мне нужна помощь в создании тепловых карт с кластерным анализом и корреляцией (я новичок в R). Мои данные в Excel выглядят так:

               Gene1   Gene2   Gene3   Gene4   Gene5  ...  Gene296

   Bacteria1     0       0       0      0.7     0.2   ...     0

   Bacteria2    0.44     0       0       0       0    ...    0.9 

   Bacteria2     0      0.32     0      0.4      0    ...     0

     ...        ...     ...     ...     ...     ...   ...    ...

   Bacteria117   0      0.2     0.3      0      0.7   ...     0

Значение 0,32 означает 32 балла от 0 до 100. Существуют более высокие оценки (например, 0,9) или более низкие оценки (например, 0 или 0,2),Я проверил на АН, а их нет. Я хочу провести кластерный анализ, чтобы выяснить, какие бактерии образуют кластеры, согласно моим экспериментальным данным (баллам). Файл CSV. Я использовал этот код:

> aa <- read.csv(file.choose())
> str(aa)

#I obtain this structure

'data.frame':   117 obs. of  296 variables:
 $ X                        : Factor w/ 117 levels "Ac_neuii_BVI",..: 45 64 67 104 1 2 3 4 5 6 ...
 $ AAC6_Iad                 : num  0 0 0 0 0 0 0 0 0 0 ...
 $ aad6                     : num  0 0 0 0 0 0 0 0 0 0 ...
 $ abeS                     : num  0 0 0 0 0 0 0 0 0 0 ...

> is.numeric(aa)
[1] FALSE

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

> az <- cor(aa)
Error in cor(aa) : 'x' must be numeric

Я пытался as.matrix, но ошибка сохраняется в матрицеконечно. Я попробовал как .numeric, но это не сработало. Я удалил X > aa$X <- NULL, и проблема исчезла (я не знаю, является ли это правильным способом решения проблемы), но название бактерий исчезло, и тогда я получил корреляцию между моими генами, а не между моими генами Ибактерии. То же самое происходит с кластеризацией с использованием hclust или dist. Есть ли способ, которым я должен организовать мой CSV-файл? Я не нашел четкой статьи в интернете о том, как решить «х должна быть числовая проблема» и как сделать корреляцию или измерить расстояния между генами и бактериями.

Спасибо. Извините за незнание некоторых вещей, которые могут показаться вам очевидными.

Ответы [ 2 ]

2 голосов
/ 04 ноября 2019

Вы можете импортировать названия бактерий как row.names:

aa <- read.csv(file.choose(), row.names = 1)
0 голосов
/ 04 ноября 2019

aa$X не является числовым (содержит факторы). Вы можете преобразовать его с помощью:

aa$X = as.numeric(aa$X)

Затем az <- cor(aa) запустится ... но (как отмечает @Cole) это не имеет смысла, поскольку X относится к названиям бактерий.

В первом столбце можно указать имена строк с параметром row.names, равным read.csv:

aa <- read.csv(file.choose(), row.names = 1)
...