【问题标题】:Error in kinship2 creating of pedigree object亲属关系2创建谱系对象时出错
【发布时间】:2020-09-06 01:07:08
【问题描述】:

我正在尝试用 kinship2 绘制非常简单的谱系。我只有一代人,但有很多不同的家庭。

id <- sample(1:100, 50, replace=F)
dadid <- sample(100:110, 50, replace=T)
momid <- sample(111:121, 50, replace=T)
sex <- sample(1:3, 50, replace=T)

df <- data.frame(cbind(dadid, momid, id, sex))

df<- df %>% mutate(famid = group_indices(., momid, dadid))

当我尝试将我的数据转换为 pedigree() 对象时:

pedAll <- pedigree(
  id = id, 
  dadid = dadid, 
  momid = momid,
  sex = sex, 
  famid = famid)

我收到以下错误:

Error in pedigree(id = id, dadid = dadid, momid = momid, sex = sex, famid = famid) : 
  Value of 'dadid' not found in the id list 1/101 5/100 5/103 11/103 11/107

任何想法为什么?多年来我一直在兜圈子,使用这个包的情况并不多。

【问题讨论】:

    标签: r family-tree


    【解决方案1】:

    几天前我刚刚开始学习如何使用这个库。 在您的数据框中,您需要为在场的每个人(包括母亲和父亲)设置一行,指定父母双方或不指定父母。 您可以手动添加它们,也可以使用 kinship2 的函数 fixParent()。此功能将添加缺失的父母,修复性别问题,并为仅给出一个父母 ID 的孩子添加第二父母。

    df_fixed <- with(df,fixParents(
      id = id, 
      dadid = dadid, 
      momid = momid,
      sex = sex))
    

    然后可以使用这个新的数据框来创建您的谱系。

    pedAll <- with(df_fixed,pedigree(
      id = id, 
      dadid = dadid, 
      momid = momid,
      sex = sex))
    plot(pedAll)
    

    但是我不太明白你想用'mutate'函数做什么。如果您在家庭中细分数据框,请确保每个家庭中的每个人都有自己的行(您的代码似乎不是这种情况)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-06
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      • 2012-05-07
      • 1970-01-01
      相关资源
      最近更新 更多