library(data.table) library(AGHmatrix) #### pedigree #### pedigreeOrg = fread("c:/Users/Student/Downloads/pedigree(4).csv") uSireId = unique(pedigreeOrg$V2) uDamId = unique(pedigreeOrg$V3) uCowId = unique(pedigreeOrg$V1) orginalId = c(uSireId, uDamId, uCowId) orginalId = as.data.table(orginalId) colnames(orginalId) = "orginalId" orginalId = merge(orginalId, pedigreeOrg, by.x = "orginalId", by.y = "V1", all.x = TRUE) orginalId$V2[is.na(orginalId$V2)] = 0 orginalId$V3[is.na(orginalId$V3)] = 0 orginalId$V4[is.na(orginalId$V4)] = 0 orginalId$V5[is.na(orginalId$V5)] = 0 setorder(orginalId, V4) orginalId$newId = 1:nrow(orginalId) newId = orginalId[, c(1, 6)] colnames(newId) = c("V2", "newSireId") orginalId = merge(orginalId, newId, by = "V2", all.x = TRUE) orginalId$newSireId[is.na(orginalId$newSireId)] = 0 colnames(newId) = c("V3", "newDamId") orginalId = merge(orginalId, newId, by = "V3", all.x = TRUE) orginalId$newDamId[is.na(orginalId$newDamId)] = 0 orginalId = orginalId[, c(3, 2, 1, 4, 5, 6, 7, 8)] setorder(orginalId, newId) A = Amatrix(orginalId[, c(6, 7, 8)]) #### phenotypes #### data = fread("c:/Users/Student/Downloads/laktacje(1).csv") firstInsemination = data[, .(firstIns = min(inseminationDate)), by = cowId] lastInsemination = data[, .(lastIns = max(inseminationDate)), by = cowId] IFL = merge(firstInsem ination, lastInsemination, by = "cowId", all.x = TRUE) IFL$phenotype = IFL$lastIns - IFL$firstIns IFL = IFL[, -c(2, 3)] IFL = merge(IFL, orginalId[, c(1, 6)], by.x = "cowId", by.y = "orginalId", all.x = TRUE) setorder(IFL, newId) #### fixed effects #### breed = model.matrix(~ as.factor(orginalId$V5[321:499]) - 1) birthYear = model.matrix(~ as.factor(orginalId$V4[321:499]) - 1) X = cbind(breed, birthYear) #### Z matrix #### Z = matrix(0, nrow(IFL), nrow(A)) I = diag(nrow(IFL)) Z[1:179, 321:499] = I