昨天的推文介绍了使用R语言对比对后的DNA序列做主成分分析的一个简单小例子,推文下有朋友留言问如何对0,1矩阵做主成分分析(PCA)查了一下参考资料找到了一个办法
参考资料的链接
- 1、 https://cran.r-project.org/web/packages/poppr/vignettes/poppr_manual.html
- 2、https://popgen.nescent.org/startMicrosatellite.html
首先是准备数据
示例数据来自于R语言包poppr
,csv文件存储,数据格式如下
image.png
- 1 位点总数
- 2 样本总数
- 3 群体总数
- 4、5、6 每个群体中 的样本数以及群体名
- 7 是样本编号
- 8 是群体名称
- 9 是位点编号
- 10 是0,1型的SSR数据
R语言读入数据
使用到的是R语言的poppr
包中的read.genalex()
函数poppr
第一次使用需要先安装
install.packages('poppr')
读入数据
代码语言:javascript复制library(poppr)
mydf<-read.genalex("rootrot.csv")
mydf
mydf1<-genclone2genind(mydf)
读入数据直接是 genclone object,使用函数genclone2genind()
将其转换成genind object,接下来使用ade4
包中的dudi.pca()
函数做主成分分析
mydf1.pca<-dudi.pca(mydf1,scannf = F,nf=2)
mydf1.pca.scores<-mydf1.pca$li
主成分的结果存储在li中
还是认为的分个组,然后做散点图
代码语言:javascript复制mydf1.pca.scores$Pop<-ifelse(mydf1.pca.scores$Axis1>0,"pop1","pop2")
library(ggplot2)
ggplot(mydf1.pca.scores,aes(x=Axis1,y=Axis2))
geom_point(aes(color=Pop))
stat_ellipse(aes(x=Axis1,y=Axis2,fill=Pop),
geom="polygon",
alpha=0.2,
lty="dashed",
color="black")
theme_bw()
image.png
以上是第一种方法,刚刚看到昨天提到的参考资料,原来和昨天的方法一样也可以读入数据
image.png
image.png
明天的推文再继续这部分内容吧!