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