如何使用相关性或聚类分析来组织数据以创建热图(x必须是数字问题)

问题描述 投票:-1回答:2

我在通过聚类分析和相关性生成热图时需要一些帮助(我是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的值表示从0到100的32分。存在较高的分数(例如0.9)或较低的分数(例如0或0.2)。我检查了NA,但没有。我想进行聚类分析,以根据我的实验数据(得分)找出哪些细菌形成了聚类。该文件是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,但是错误当然会在矩阵中继续。我尝试使用as.numeric,但是没有用。我删除了X > aa$X <- NULL,问题消失了(我不知道这是否是解决问题的正确方法),但是细菌的名称消失了,然后我得到了基因之间的关联,而不是基因之间的关联,并且细菌。使用hclust或dist进行聚类也会发生相同的情况。有什么方法可以整理我的csv文件?我在互联网上找不到关于如何解决“ x必须是数字问题”以及如何进行相关性或测量基因与细菌之间距离的清晰文章。

谢谢。抱歉,您可能对某些事情不了解,这很明显。

r cluster-analysis heatmap hierarchical-clustering pearson-correlation
2个回答
2
投票

您可以将细菌名称导入为row.names:

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

0
投票

aa$X不是数字(它包含因子)。您可以使用以下方法进行转换:

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

然后az <- cor(aa)将运行...但是(如@Cole所述)没有意义,因为X指的是细菌的名称。

您可以使用row.namesread.csv参数将第一列设置为行的名称:

aa <- read.csv(file.choose(), row.names = 1)
© www.soinside.com 2019 - 2024. All rights reserved.