Я создал несколько фиктивных данных в описанном вами формате:
data = read.delim("family.txt", row.names = 1, sep = " ")
m sm f sf
100001 1 2 1 2
100002 1 1 1 2
100003 1 1 2 2
100004 2 2 1 2
100005 2 2 2 1
Затем я преобразовал их в логические значения (с которыми легче работать):
data = apply(data - 1, 2, as.logical) # Convert to true/false
Затем я просто создаю вектор поиска с семейными угольками и запускаю apply
l oop для подмножества этого на основе данных:
lives_with = c('mother', 'step-mother', 'father', 'step-father')
family_encoding = apply(data, 1, function(row){
paste(lives_with[row], collapse = ":")
})
Это дает вектор кодировок, который вы можете использовать к коэффициенту:
> factor(family_encoding)
[1] step-mother:step-father step-father
[3] father:step-father mother:step-mother:step-father
[5] mother:step-mother:father
5 Levels: father:step-father ... step-mother:step-father