我有一个看起来像的数据框:

animal_id   trait_id    sire_id dam_id
    1         25.05        0       0
    2         -46.3        1       2
    3          41.6        1       2
    4         -42.76       3       4
    5         -10.99       3       4
    6         -49.81       5       4

我想创建另一个变量,其中包含每个“sire_id”和“dam_id”的“trait_id”估计值。

所有的公牛 (sire_id) 和母牛 (dam_id) 也出现在animal_id 列中。所以我想要做的是在 trait_id 中寻找他们的度量并在新变量中重复这个变量。

我想要的结果是:
animal_id   trait_id    sire_id trait_sire  dam_id  trait_dam
     1       25.05         0        NA        0        NA
     2       -46.3         1       25.05      2       -46.3
     3       41.6          1       25.05      2       -46.3
     4      -42.76         3       41.6       4       -42.76
     5      -10.99         3       41.6       4       -42.76
     6      -49.81         5      -10.99      4       -42.76

任何建议将不胜感激。

最佳答案

您可以使用 matchmatch(col, df$animal_id) 给出了 animal_id 中 col 元素的对应索引,可以进一步用于定位 trait 的值:

df[c("trait_sire", "trait_dam")] <-
    lapply(df[c("sire_id", "dam_id")], function(col) df$trait_id[match(col, df$animal_id)])

df
#  animal_id trait_id sire_id dam_id trait_sire trait_dam
#1         1    25.05       0      0         NA        NA
#2         2   -46.30       1      2      25.05    -46.30
#3         3    41.60       1      2      25.05    -46.30
#4         4   -42.76       3      4      41.60    -42.76
#5         5   -10.99       3      4      41.60    -42.76
#6         6   -49.81       5      4     -10.99    -42.76

关于r - 从与变量匹配的另一列中查找值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43349709/

10-12 17:11
查看更多