r - 如何使用三个不同数据帧的变量执行 PCA 并对它们进行颜色区分?

标签 r dataframe pca

我有三个数据框,我想在 R 中执行主成分分析 (PCA)。我将数据框与 rbind() 合并。并用它做了主成分分析(PCA)。那行得通。但我想根据它们所属的数据框来区分这些点。对于合并的数据框,这是不可能的(或者不是吗?)。当我使用PCA(X=c(df1,df2,df3)时它提示行数不同(显然实际上是这样)。

pca <- PCA(X=c(df1,df2,df3))
fviz_pca_ind(pca,
             geom.ind = "point", # show points only (nbut not "text")
             col.ind = c(df1,df2,df3), # color by groups
             palette = c("#00AFBB", "#E7B800", "#FC4E07"),
             addEllipses = TRUE, # Concentration ellipses
             legend.title = "Groups"
             )

这不起作用...

如何使用三个不同数据帧的变量执行 PCA 并对它们进行颜色区分? 我没有代表,因为在这种情况下很难提供。

谢谢大家的建议;)

最佳答案

您需要收集数据帧的长度,一种方法如下所示,我在列表中收集了 3 个数据帧:

library(FactoMineR)
library(factoextra)

df1 = subset(iris,Species=="setosa")[,-5]
df2 = subset(iris,Species=="versicolor")[,-5]
df3 = subset(iris,Species=="virginica")[,-5]

X = list(df1=df1,df2=df2,df3=df3)

您使用do.call(rbind..)组合它们,并且标签按行数重复数据框的名称:

labels = rep(names(X),sapply(X,nrow))
table(labels)

然后进行绘图,将 col.ind 作为标签:

pca <- PCA(do.call(rbind,X))
fviz_pca_ind(pca,
             geom.ind = "point", # show points only (nbut not "text")
             col.ind = labels, # color by groups
             palette = c("#00AFBB", "#E7B800", "#FC4E07"),
             addEllipses = TRUE, # Concentration ellipses
             legend.title = "Groups"
)

enter image description here

关于r - 如何使用三个不同数据帧的变量执行 PCA 并对它们进行颜色区分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60190808/

相关文章:

python - 可视化 PCA 转换后的数据

python-3.x - Wine 质量数据集分析

r - 将特定值与 colorkey levelplot R 中的特定颜色进行匹配

r - R中组合多个条件过滤掉行

r - R中的tapply和aggregate有什么区别?

r - 如何在 data.frame 中引用 data.frame 的列?

python - Pandas 为每个字符拆分数据框列

r - 从存储在列表中的 data.frame 调用变量

python - 创建 1 x n pandas DataFrame

matlab - 如何对图像应用主成分分析