问题描述
我是生物学家,不是程序员,所以请保持温和。
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 着色。有没有办法做到这一点?
解决方法
首先,我将创建一个包含所有可用信息的完整 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")
之后,您可以使用非常方便绘制 PCA 的 factoextra
包:
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) 然后你绑定 df 和 df2
df3=rbind(df,df2)
df3=data.frame(t$df)
然后使用 df3 执行 PCA