如何在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)

更多文档:

Tree

rpubs预览:

http://rpubs.com/zhiping/7229

最新的: