将样本信息添加到 PCA (R) 中的数据集
Posted
技术标签:
【中文标题】将样本信息添加到 PCA (R) 中的数据集【英文标题】:Add sample info to dataset in PCA (R) 【发布时间】:2021-08-24 09:31:00 【问题描述】:我是生物学家,不是程序员,所以请温柔一点。
所以我有一个看起来像的数据集
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 着色。有没有办法做到这一点?
【问题讨论】:
我真的认为您应该阅读教程或更清楚地解释您想要做什么。您想要列中的患者吗? 【参考方案1】:首先,我将创建一个包含所有可用信息的完整 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
【讨论】:
嗨,我会这样做,但实际数据包含 10,999 个观察结果,因此无法逐个手动完成,我的意思是第一部分 你有rbind
函数可以做到这一点,假设我们在你的帖子 df 中保留第一个数据框,仅在行名中包含基因值和基因名称,并且你有第二个数据框 df2 与患者信息在列中,您的新数据框将是 rbind(df,df2)
以上是关于将样本信息添加到 PCA (R) 中的数据集的主要内容,如果未能解决你的问题,请参考以下文章
R语言使用psych包的principal函数对指定数据集进行主成分分析PCA进行数据降维(输入数据为相关性矩阵)计算主成分评分系数每个样本(观察)的主成分得分由主成分分数系数构建的公式得到