Skip to content

Instantly share code, notes, and snippets.

@ouyangzhiping
Created July 25, 2013 15:57
Show Gist options
  • Save ouyangzhiping/6081163 to your computer and use it in GitHub Desktop.
Save ouyangzhiping/6081163 to your computer and use it in GitHub Desktop.
如何在R中绘制家族树

如何在R中绘制家族树

家族树是民族志,社会学与心理学常用的一种方法,在笔者的婚恋关系研究中,同样也需要绘制夫妻双方的家族树,以求其其相似性. 恰巧网友今日询问类似问题,记录步骤如下. (以下操作均在RStudio中执行.)

1. 安装并加载家族树R包kinship2

install.packages("kinship2", dependencies = TRUE)
## Error: trying to use CRAN without setting a mirror
require(kinship2, quietly = TRUE)
## Loading required package: lattice

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)

plot of chunk unnamed-chunk-8

更多文档:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment