0

我是生物学家,不是程序员,所以请保持温柔。

所以我有一个看起来像的数据集

Genes  Patient1   Patient2   Patient3
A          324      433         343
B          431       342        124
Z          232       234        267

然后我有样本表,其中包含样本信息,例如:

Patient1 - Healthy
Patient2 - Disease
Patient3 - Healthy

我在用:

library(ggfortify)
df <- dataset
pca_res <- prcomp(df, scale. = TRUE)

autoplot(pca_res)

然后我想做

autoplot(pca_res, data = ?, colour = '?')

我希望使用样本表中的信息使用自动绘图功能根据状态(健康/疾病)为我的 PCA 着色。有没有办法做到这一点?

4

1 回答 1

0

首先,我将创建一个包含所有可用信息的完整 data.frame。

例如,您将需要创建这种 data.frame :

df=structure(list(A = c(324, 433, 343), B = c(431, 342, 124), Z = c(232, 
234, 267), Status = c("Healthy", "Disease", "Healthy")), row.names = c("Patient1", 
"Patient2", "Patient3"), class = "data.frame")

之后,您可以使用factoextra非常方便的包来绘制 PCA :

pca_res <- prcomp(df, scale. = TRUE)
library(factoextra)
fviz_pca_ind(pca_res, habillage=df$Status)

您可以查看fviz_pca_ind文档以修改颜色

编辑 :

要从您的 2 个数据集创建整个数据框:

1)获取您的第一个数据框并将第一列作为行名

rownames(df)=df$Genes
df=df[,-1] #remove the gene column in order to keep only the values

2)格式化您的第二个数据框您应该将其格式化为具有与 df (Patient1, Patient2,...) 相同的列,每个列都有疾病状态,您将调用 df2

df2
rownames(df2)=c("Status")

Patient1   Patient2   Patient3
Healthy   Disease   Healthy

我们不知道您的数据,因此您必须自己执行此操作

3)然后你 rbind df 和 df2

df3=rbind(df,df2)
df3=data.frame(t$df)

然后你用 df3 执行 PCA

于 2021-06-07T10:01:45.243 回答