我有一个看起来像的数据框:
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
任何建议将不胜感激。
最佳答案
您可以使用 match
; match(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/