如何在R中绘制家族树
家族树是民族志,社会学与心理学常用的一种方法,在笔者的婚恋关系研究中,同样也需要绘制夫妻双方的家族树,以求夫妻之间的相似性.
恰巧网友今日询问类似问题,记录步骤如下. (以下操作均在RStudio中执行.) 你可以直接将本文件,保存为Rmarkdown格式,在Rstudio中打开并执行。
1. 安装并加载家族树R包kinship2
install.packages("kinship2", dependencies = TRUE)
require(kinship2,quietly=TRUE)
2. 创建家族关系
创建家族人口编号,分别从1到49
ids <- 1:49
依次描述编号1到编号49的,他们的爸爸是多少,他们的妈妈编号是多少.如,1,2,3,6号的爸爸是41号,妈妈是42号,格式如下:
dad <- c(41,41,41,NA,NA,41,43,43,4,6,
6,NA,9,9,9,NA,11,11,NA,15,
15,19,45,45,45,45,45,45,45,47,
NA,29,29,29,29,NA,31,31,31,36,
NA,NA,NA,NA,NA,NA,NA,NA,37)
mom <- c(42,42,42,NA,NA,42,44,44,5,7,
7,NA,10,10,10,NA,12,12,NA,16,
16,18,46,46,46,46,46,46,46,48,
NA,30,30,30,30,NA,32,32,32,35,
NA,NA,NA,NA,NA,NA,NA,NA,13)
描述各自性别与现在是否在世关系
1表示男,2表示女,3表示未知.4表示中止
sexes <- c(1,1,1,1,2,1,2,2,1,2,
1,2,2,1,1,2,1,2,1,1,
1,1,2,2,2,1,1,1,1,2,
1,2,1,1,2,1,1,1,2,2,
1,2,1,2,1,2,1,2,3)
0表示在世,1表示死亡.
dead <- c(0,0,0,0,0,0,0,1,0,0,
0,0,0,0,0,0,0,0,0,0,
0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0)
描述来往状态关系.0表示不受影响;1表示受到影响;NA表示未知.
affected1 <- c(0,0,0,0,0,0,0,0,0,0,
1,0,0,0,1,0,0,0,0,0,
0,1,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,1,0,0,
NA,NA,NA,NA,NA,NA,NA,NA,NA)
affected2 <- c(0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,
0,0,NA,NA,NA,NA,NA,NA,NA,1,
0,0,0,1,1,0,0,0,0,0,
NA,NA,NA,NA,NA,NA,NA,NA,NA)
affect <- as.matrix(cbind(affected1, affected2))
将上述所有关系赋值给变量family.
family <- pedigree(id=ids, dadid=dad, momid=mom,
affected=affect, sex=sexes, status=dead)
3. 家族关系可视化
plot.pedigree(family)
pedigree.legend(family, location="bottomright",
labels=list("Factor VIII\nDeficiency", "Myotonic\nDystrophy"), cex=0.8, radius=0.3)
更多文档:
rpubs预览:
http://rpubs.com/zhiping/7229