微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将样本信息添加到 PCA (R) 中的数据集

如何解决将样本信息添加到 PCA (R) 中的数据集

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。