У меня есть фрейм данных, состоящий из родословных, с идентификаторами столбцов, DADID, MOMID, SEX и несколькими другими для использования в r пакетах kinship2 и optiSel.В настоящее время мои данные находятся в факторной форме (идентификаторы описываются именами отдельных лиц, а не числами), и это вызывает проблему при попытке отформатировать полученные родословные из optiSel.
Я не уверен, насколько кто-либо из вас знаком с optiSel, но у него есть функция subPed, которая создает небольшую родословную из большого набора данных и использует значения из пакета Kinship2 для настройки эстетики построенного графика.родословная.
Моя проблема возникла, когда я попытался построить более крупную родословную, потому что имена значительно перекрывали друг друга и делали невозможным чтение.Я не мог отрегулировать ширину или длину текста, а также сам график из-за несовместимости требований к данным для kinship2 и optiSel.Родство2 Я считаю, что идентификаторы должны быть в числовой форме, поэтому моя цель состоит в том, чтобы найти быструю функцию изменения моих персонажей на числа, которые бы соответствовали всем отношениям в моих родословных.
В частности, у меня есть один человек встрока в столбце ID
, которая появляется в другой строке в столбце DADID
, и когда я изменяю их имя на число, мне нужно, чтобы эти числа были равны (в соответствии с идентичностью этого символа).
Кажется, я не могу найти быстрый способ сделать это, поскольку в моих данных по родословной пока более 700 человек.
sped<-subPed(pedigree, keep = c("Customs Ajax AAD"), prevGen = 2, succGen = 2)
pedplot(sped, cex = 0.2)
#The resulting pedigree from this is extremely small, but I can't make it any larger to see the names because there isn't sufficient room
pedplot(sped, cex = 0.2, width = 8)
#nothing changes because the 'width' aest isn't compatible
#attempt to plot with kinship2 instead:
plot.pedigree(sped, id=sped$Indiv)
Error in plot.pedigree(sped, id = sped$Indiv) : Wrong length for id
#trying to change characters to numbers:
pednum<-as.numeric(pedigree$ID)
#this only changes those of one column, and doesn't integrate it
#rename and replace functions don't work