---
title: "Data analysis - part 2 - final"
author: "Anna Edvardsson Rasmussen"
date: "2024-06-11"
output: pdf_document
---
# Packages and setup
```{r setup, echo =FALSE, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
library("reshape2")
library("plyr")
library("readxl")
library("magrittr")
library("data.table")
library("lubridate")
library("broom")
library("lmerTest")
library("emmeans")
library("car")
library("foreign")
library("ggplot2")
library("Hmisc")
library("ordinal")
library("RVAideMemoire")
library("survival")
library("coxme")
library("survminer")
library("ggfortify")
library("lme4")
library("tidyverse")
library("tidylog")
library("validate")
library("writexl")
```

# Inkluderade djur - manuell fil
```{r}
D2<-read_excel("data/Inkluderade_djur_del_2_-_2022-12-08.xlsx")
setnames(D2, old = c('Ko-ID','Out'), 
         new = c('CowID','Out'))
```

1.  read excel.files - klart
2.  merge similar files - klart
3.  remove duplicate rows - klart
4.  Filter - only right farms - klart
5.  filter - only right dates - klart
6.  filter - only right cows
7.  define data needed in each file type
8.  extract needed data from each file type
9.  calculate additional needed data from extracted data
10. merge all data needed for part 2 info one (or two) files

# Merga kalvn

```{r, echo =FALSE, include=FALSE}
k1<-read_excel("data/Kalvn_del_2_-_2022-08-02.xlsx")
k2<-read_excel("data/Kalvn_del_2_-_2023-01-02.xlsx")
kt<-rbind(k1,k2)
ukt<-unique(kt) # remove duplicates
fukt<-filter(ukt, Gård %in% c("B","D","E","F","H","I","J","K","L","M","Q","R","T","U","V","X","Y","Z"))
dfukt<-filter(fukt, Kalvningsdatum > '2020-09-30')
kd<-dfukt[c(1:3,13,16,18,21,22)]
setnames(kd, old = c('KoID','Kalvnr','Gård','Kalvningsdatum','Öronnr i födelseid, kalven','Förlossningskod','Twinnr','Twin'), 
         new = c('CowID','Calvnr','Farm','Calvingdate','CalfID','Birthcode','Twinnr','Twin'))
kd<-kd[-c(1590:1612),] # (I1021:I1091) inköpta djur: ser ut som förstakalvare men har provmjölkats tidigare - exkluderar dessa rader
kd<-kd[-c(1987),] # (I560 - också inköpt - behövdes exkluderas separat av någon anledning..
kd<-kd[-c(5946),] # (Y 961 - också inköpt - behövdes exkluderas separat av någon anledning..
kd1<-filter(kd, Calvnr == 1) # lägga kalvningar brevid varandra
kd1<-filter(kd1, Calvingdate < '2021-04-01')
kd2<-filter(kd, Calvnr == 2) 
kd3<-filter(kd, Calvnr == 3) 
```

## Lösa dubletter pga tvillingar

inga dubletter - brevid varanda istället 1. Tvilling ja/nej 2. Öronnr1 3. Öronnr2

1.  filtrera ut tvilling 1 och tvilling 2 i varsitt dataset
2.  joina
3.  behåll endast icke dublettrader
4.  joina med resten av kalvningsdatasetet

```{r, echo =FALSE, include=FALSE}
kd1t1<-filter(kd1,Twinnr == 1)
kd1t2<-filter(kd1,Twinnr == 2)
mt1<-left_join(kd1t1, kd1t2, by = "CowID", copy = FALSE, suffix = c(".1", ".2"), keep = FALSE, na_matches = "na")# removed "na_matches = "na""
mt1<-mt1[c(1:8,12,14)]
mt1$dubblett<-ifelse(mt1$CalfID.1 == 0 & mt1$CalfID.2 == 0,"No",
  ifelse(mt1$CalfID.1 == mt1$CalfID.2,"Yes","No"))
mt1<-filter(mt1,dubblett == "No")
mt1<-left_join(kd1t1, mt1, by = "CowID", copy = FALSE, suffix = c(".1", ".2"), keep = FALSE, na_matches = "na") # removed "na_matches = "na""
mt1<-mt1[c(1:6,8,16)]

kd2t1<-filter(kd2,Twinnr == 1)
kd2t2<-filter(kd2,Twinnr == 2)
mt2<-left_join(kd2t1, kd2t2, by = "CowID", copy = FALSE, suffix = c(".1", ".2"), keep = FALSE, na_matches = "na") # removed "na_matches = "na""
mt2<-mt2[c(1:8,12,14)]
mt2$dubblett<-ifelse(mt2$CalfID.1 == 0 & mt2$CalfID.2 == 0,"No",
                     ifelse(mt2$CalfID.1 == mt2$CalfID.2,"Yes","No"))
mt2<-filter(mt2,dubblett == "No")
mt2<-left_join(kd2t1, mt2, by = "CowID", copy = FALSE, suffix = c(".1", ".2"), keep = FALSE, na_matches = "na") # removed "na_matches = "na""
mt2<-mt2[c(1:6,8,16)]

kd3t1<-filter(kd3,Twinnr == 1)
kd3t2<-filter(kd3,Twinnr == 2)
mt3<-left_join(kd3t1, kd3t2, by = "CowID", copy = FALSE, suffix = c(".1", ".2"), keep = FALSE, na_matches = "na") # removed "na_matches = "na""
mt3<-mt3[c(1:8,12,14)]
mt3$dubblett<-ifelse(mt3$CalfID.1 == 0 & mt3$CalfID.2 == 0,"No",
                     ifelse(mt3$CalfID.1 == mt3$CalfID.2,"Yes","No"))
mt3<-filter(mt3,dubblett == "No")
mt3<-left_join(kd3t1, mt3, by = "CowID", copy = FALSE, suffix = c(".1", ".2"), keep = FALSE, na_matches = "na") # removed "na_matches = "na""
mt3<-mt3[c(1:6,8,16)]
mt3<-unique(mt3) #joina kalvnigsfiler så kalvningarna kommer brevid varandra istället för dubletter

mk1<-left_join(mt2, mt3, by = "CowID", copy = FALSE, suffix = c(".2", ".3"), keep = FALSE, na_matches = "na") # removed "na_matches = "na""
mk<-left_join(mt1, mk1, by = "CowID", copy = FALSE, suffix = c("", ".1"), keep = FALSE, na_matches = "na") # removed "na_matches = "na""
mk<-unique(mk)
```

# "D2m" Mergat D2 och Mk3 - manuellt + växadataset med kalvningar - inkluderade djur

I manuella filen (D2) 783 rader var även kor som utgått innan kalvning med, n = 146. men alla 666 som jag hittat i växadata (mk) finns även i manuella filen!! Slutlig fil = "mD2"

Slutligt kalvnigsdataset "mD2" - behöver felkollas ytterligare: Bara kor som är med i växadata + manuellt dataset = 666 st. kollat med setdiff

Datasettets uppbyggnad: 1. 'CowID' 2. 'Calvnr' 3. 'Farm' 4. 'Calvingdate' 5. 'CalfID' 6. 'Birthcode' - kalvningssvårigheter 7. Twin = Yes om tvilling, annars No 8. Calfid.2: om tvilling, andra kalvens öroniD för upp till 3 kalvningar

kan även räkna fram: 1. Antal kalvningar 2. Kalvningsintervall

```{r, echo =FALSE, include=FALSE}
D2m<-left_join(D2, mk, by = "CowID", copy = FALSE, suffix = c(".D2", ".mk"), keep = FALSE, na_matches = "na")
mD2<-left_join(mk,D2,by = "CowID", copy = FALSE, suffix = c(".mk", "D2"), keep = FALSE, na_matches = "na")
mD2<-mD2[-c(2,9,10,16,17)]
colnames(mD2)[3] ="Calvingdate.1"
colnames(mD2)[7] ="CalfID.t"
colnames(mD2)[9] ="CalfID.2"
colnames(mD2)[12] ="CalfID.t2"
colnames(mD2)[17] ="CalfID.t3"
```

# merga harst

1.  CowID
2.  Farm
3.  Breed father
4.  Breed mother
5.  Breed

```{r, echo =FALSE, include=FALSE}
h1<-read_excel("data/Harst_del_2_-_2022-08-02.xlsx")
h2<-read_excel("data/Harst_del_2_-_2023-01-02.xlsx")
ht<-rbind(h1,h2)
uht<-unique(ht) # remove duplicates
fuht<-filter(uht, Gård %in% c("B","D","E","F","H","I","J","K","L","M","Q","R","T","U","V","X","Y","Z"))
hd<-fuht[c(1,19,26)]
hd<-setnames(hd, old = c('KoID','Ras, fader','Ras, moder'), 
         new = c('CowID','FatherBreed','MotherBreed'))
hd$FatherBreed[hd$FatherBreed == 2] <- "HOL"
hd$MotherBreed[hd$MotherBreed == 2] <- "HOL"
hd$FatherBreed[hd$FatherBreed == 1] <- "RDC"
hd$MotherBreed[hd$MotherBreed == 1] <- "RDC"
hd$FatherBreed[hd$FatherBreed == 5] <- "RDC"
hd$MotherBreed[hd$MotherBreed == 5] <- "RDC"
hd$FatherBreed[hd$FatherBreed == 6] <- "RDC"
hd$MotherBreed[hd$MotherBreed == 6] <- "RDC"
hd$FatherBreed[hd$FatherBreed == 105] <- "RDC"
hd$MotherBreed[hd$MotherBreed == 105] <- "RDC"
hd$FatherBreed[hd$FatherBreed == 501] <- "RDC"
hd$MotherBreed[hd$MotherBreed == 501] <- "RDC"
hd$FatherBreed[hd$FatherBreed == 601] <- "RDC"
hd$MotherBreed[hd$MotherBreed == 601] <- "RDC"
hd$FatherBreed[hd$FatherBreed == 106] <- "RDC"
hd$MotherBreed[hd$MotherBreed == 106] <- "RDC"
hd$FatherBreed[hd$FatherBreed < 9915] <- "Cross"
hd$MotherBreed[hd$MotherBreed < 9915] <- "Cross"
hd$FatherBreed<-as.factor(hd$FatherBreed)
hd$MotherBreed<-as.factor(hd$MotherBreed)
hd$Breed2 <- hd$FatherBreed
hd$Breed2 <- as.factor(hd$Breed2)
hd$Breed2 <- ifelse(hd$MotherBreed != hd$FatherBreed, TRUE, FALSE)
hd$Breed2 <- replace(hd$Breed2, hd$Breed2 == TRUE,"Cross")
hd$Breed2 <- as.factor(hd$Breed2)
hd$Breed<-ifelse(hd$Breed2=="Cross","Cross",hd$MotherBreed)
hd$Breed[hd$Breed == 2] <- "HOL"
hd$Breed[hd$Breed == 3] <- "RDC"
hd$Breed[hd$Breed == 1] <- "Cross"
hd$Breed <- as.factor(hd$Breed)
```


```{r, echo =FALSE, include=FALSE}
hd<-hd[c(1:3,5)]
```

# Merga inkluderade djur + harst

```{r, echo =FALSE, include=FALSE}
mk3hd<-left_join(mD2, hd, by = "CowID", copy = FALSE, suffix = c(".mk3", ".hd"), keep = FALSE, na_matches = "na")
mk3hd<-unique(mk3hd)
```

# merga IngUtg

i1\<-read_excel("data/IngUtg del 2 - 2022-08-02.xlsx", col_types = c("text","text","numeric","numeric","numeric","numeric","numeric","numeric","numeric","numeric","numeric","date","date","numeric","numeric","numeric")) ui1<-unique(i1) # remove duplicates fui1<-filter(ui1, Gård %in% c("B","D","E","F","H","I","J","K","L","M","Q","R","T","U","V","X","Y","Z")) dfui1<-filter(fui1, Utgångsdatum > '2020-09-30') nafui1<-filter(fui1, Utgångsdatum < '1900-01-01') ddfui1<-rbind(dfui1,nafui1) i1<-fui1[c(1,13,14)] i1<-setnames(i1, old = c('KoID','Utgångsdatum','Utgångsorsak, huvudorsak'),  new = c('CowID','OutDate1','OutCause1')) i2<-read_excel("data/IngUtg del 2 - 2023-01-02.xlsx", col_types = c("text","text","numeric","numeric","numeric","numeric","numeric","numeric","numeric","numeric","numeric","date","date","numeric","numeric","numeric")) ui2\<-unique(i2) \# remove duplicates fui2\<-filter(ui2, Gård %in% c("B","D","E","F","H","I","J","K","L","M","Q","R","T","U","V","X","Y","Z")) dfui2\<-filter(fui2, Utgångsdatum \> '2020-09-30') nafui2\<-filter(fui2, Utgångsdatum \< '1900-01-01') ddfui2\<-rbind(dfui2,nafui2) i2\<-fui2[c(1,13,14)] i2\<-setnames(i2, old = c('KoID','Utgångsdatum','Utgångsorsak, huvudorsak'), new = c('CowID','OutDate2','OutCause2')) Problem när mergat två filer - om ej out i ena men out i andra =\> dublettrader

```{r, echo =FALSE, include=FALSE}
i1<-read_excel("data/IngUtg_del_2_-_2022-08-02.xlsx", col_types = c("text","text","numeric","numeric","numeric","numeric","numeric","numeric","numeric","numeric","numeric","date","date","numeric","numeric","numeric"))
ui1<-unique(i1) # remove duplicates
fui1<-filter(ui1, Gård %in% c("B","D","E","F","H","I","J","K","L","M","Q","R","T","U","V","X","Y","Z"))
dfui1<-filter(fui1, Utgångsdatum > '2020-09-30')
i1<-dfui1[c(1,13,14)]
i2<-read_excel("data/IngUtg_del_2_-_2023-01-02.xlsx", col_types = c("text","text","numeric","numeric","numeric","numeric","numeric","numeric","numeric","numeric","numeric","date","date","numeric","numeric","numeric"))
ui2<-unique(i2) # remove duplicates
fui2<-filter(ui2, Gård %in% c("B","D","E","F","H","I","J","K","L","M","Q","R","T","U","V","X","Y","Z"))
dfui2<-filter(fui2, Utgångsdatum > '2020-09-30')
i2<-dfui2[c(1,13,14)]
i1n<-setnames(i1, old = c('KoID','Utgångsdatum','Utgångsorsak, huvudorsak'), 
         new = c('CowID','OutDate','OutCause'))
i2n<-setnames(i2, old = c('KoID','Utgångsdatum','Utgångsorsak, huvudorsak'), 
         new = c('CowID','OutDate','OutCause'))
it2<-rbind(i1n, i2n)
it2<-unique(it2)
```


# Merga inkluderade djur + harst + IngUtg

```{r, echo =FALSE, include=FALSE}
mk3hi<-left_join(mk3hd, it2, by = "CowID", copy = FALSE, suffix = c(".mk3hd", ".it2"), keep = FALSE, na_matches = "na")
mk3hi$OutDate<-as.Date(mk3hi$OutDate)
```


# Merga laktavk
l1\<-distinct(l1, 'KoID','Kg mjölk', .keep_all= TRUE) l2\<-distinct(l2, 'KoID','Kg mjölk', .keep_all= TRUE)

l1u\<-unique(l1[-c(2)]) \# remove duplicates l2u\<-unique(l2[-c(2)]) \# remove duplicates

mk3hil mk3hil$dupl<-ifelse(duplicated(mk3hil$CowID),"dupl",NA)

ld\<-left_join(l1, l2, by = "CowID", copy = FALSE, suffix = c(".ld1", ".ld2"), keep = FALSE, na_matches = "na") \# merga laktavk

```{r, echo =FALSE, include=FALSE}
l1<-read_excel("data/Laktavk_del_2_-_2022-08-02.xlsx")
l2<-read_excel("data/Laktavk_del_2_-_2023-01-02.xlsx")
lt<-rbind(l1,l2)
ult<-unique(lt) # remove duplicates
fult<-filter(ult, Gård %in% c("B","D","E","F","H","I","J","K","L","M","Q","R","T","U","V","X","Y","Z"))
dfult<-filter(fult, Kalvningsdatum > '2020-09-30')
ld<-dfult[c(1,2,15:17)]
ld<-setnames(ld, old = c('KoID','Kg mjölk','Kg fett','Kg protein'), 
         new = c('CowID','Kg.Milk','Kg.Fat','Kg.Prot'))

ld1<-filter(ld, Laktnr == 1)
ld2<-filter(ld, Laktnr == 2)
ml<-left_join(ld1, ld2, by = "CowID", copy = FALSE, suffix = c(".ld1", ".ld2"), keep = FALSE, na_matches = "na")
ml<-unique(ml)
```

Ingen ko har avklarat tre laktationer - skippar Laktnr == 3

# Merga inkluderade djur + harst + IngUtg + laktavk

```{r, echo =FALSE, include=FALSE}
mk3hil<-left_join(mk3hi, ml, by = "CowID", copy = FALSE, suffix = c(".mk3hi", ".ld"), keep = FALSE, na_matches = "na")
mk3hil<-unique(mk3hil)
```

# merga sin

```{r, echo =FALSE, include=FALSE}
n1<-read_excel("data/Sin_del_2_-_2022-08-02.xlsx")
n2<-read_excel("data/Sin_del_2_-_2023-01-02.xlsx")
nt<-rbind(n1,n2)
unt<-unique(nt) # remove duplicates
funt<-filter(unt, Gård %in% c("B","D","E","F","H","I","J","K","L","M","Q","R","T","U","V","X","Y","Z"))
colnames(funt)[13] ="sindatum"
dfunt<-filter(funt, sindatum > '2020-09-30')
nd<-dfunt[c(1,2,13)]
nd<-setnames(nd, old = c('KoID','Sinnr','sindatum'), 
         new = c('CowID','Drynr','DryDate'))
nd1<-filter(nd, Drynr == 1)
nd2<-filter(nd, Drynr == 2)
nd3<-filter(nd, Drynr == 3)
mn1<-left_join(nd1, nd2, by = "CowID", copy = FALSE, suffix = c("", ".2"), keep = FALSE, na_matches = "na")
mn<-left_join(mn1, nd3, by = "CowID", copy = FALSE, suffix = c("", ".3"), keep = FALSE, na_matches = "na")
mn<-mn[c(1,3,5,7)]
```

No cows dried of 3 times in the study.

# Merga inkluderade djur + harst + IngUtg + laktavk + Sindat

mk3hiln$dupl<-ifelse(duplicated(mk3hiln$CowID),"dupl",NA)

```{r, echo =FALSE, include=FALSE}
mk3hiln<-left_join(mk3hil, mn, by = "CowID", copy = FALSE, suffix = c(".mk3hi", ".ld"), keep = FALSE, na_matches = "na")
```

# merga provm

## basic filtrera ut

```{r, echo =FALSE, include=FALSE}
p1<-read_excel("data/Provmj_del_2_-_2022-08-02.xlsx", col_types = c("text", "numeric", "text", "numeric", "numeric", "numeric", "numeric", "numeric", "numeric", "numeric", "numeric", "numeric", "date", "numeric", "numeric", "numeric", "numeric", "numeric", "numeric", "numeric", "numeric", "numeric", "text"))
p2<-read_excel("data/Provmj_del_2_-_2023-01-02.xlsx", col_types = c("text", "numeric", "text", "numeric", "numeric", "numeric", "numeric", "numeric", "numeric", "numeric", "numeric", "numeric", "date", "numeric", "numeric", "numeric", "numeric", "numeric", "numeric", "numeric", "numeric", "numeric", "text"))
pt<-rbind(p1,p2)
upt<-unique(pt) # remove duplicates
fupt<-filter(upt, Gård %in% c("B","D","E","F","H","I","J","K","L","M","Q","R","T","U","V","X","Y","Z"))
dfupt<-filter(fupt, Provmjölkningsdatum > '2020-09-30')
pd<-dfupt[c(1,2,13,17:22)]
pd<-setnames(pd, old = c('KoID','Povmjnr','Provmjölkningsdatum','Kg mjölk','Fetthalt','Proteinhalt','Celltal','Urea','Juverhälsoklass'), 
         new = c('CowID','TMnr','TMDate','KgMilk','FatPerc','ProtPerc','SCC','Urea','Jhkl'))

pd1<-filter(pd, TMnr == 1)
pd2<-filter(pd, TMnr == 2)
pd3<-filter(pd, TMnr == 3)
pd4<-filter(pd, TMnr == 4)
pd5<-filter(pd, TMnr == 5)
pd6<-filter(pd, TMnr == 6)
pd7<-filter(pd, TMnr == 7)
pd8<-filter(pd, TMnr == 8)
pd9<-filter(pd, TMnr == 9)
pd10<-filter(pd, TMnr == 10)
pd11<-filter(pd, TMnr == 11)
pd12<-filter(pd, TMnr == 12)
pd13<-filter(pd, TMnr == 13)
pd14<-filter(pd, TMnr == 14)
pd15<-filter(pd, TMnr == 15)
pd16<-filter(pd, TMnr == 16)
pd17<-filter(pd, TMnr == 17)
pd18<-filter(pd, TMnr == 18)
pd19<-filter(pd, TMnr == 19)
pd20<-filter(pd, TMnr == 20)
pd21<-filter(pd, TMnr == 21)
pd22<-filter(pd, TMnr == 22)
pd23<-filter(pd, TMnr == 23)
pd24<-filter(pd, TMnr == 24)
pd25<-filter(pd, TMnr == 25)
pd26<-filter(pd, TMnr == 26)
pd27<-filter(pd, TMnr == 27)

mp1<-left_join(pd1, pd2, by = "CowID", copy = FALSE, suffix = c(".pd1", ".pd2"), keep = FALSE, na_matches = "na")
mp2<-left_join(pd3, pd4, by = "CowID", copy = FALSE, suffix = c(".pd3", ".pd4"), keep = FALSE, na_matches = "na")
mp3<-left_join(pd5, pd6, by = "CowID", copy = FALSE, suffix = c(".pd5", ".pd6"), keep = FALSE, na_matches = "na")
mp4<-left_join(pd7, pd8, by = "CowID", copy = FALSE, suffix = c(".pd7", ".pd8"), keep = FALSE, na_matches = "na")
mp5<-left_join(pd9, pd10, by = "CowID", copy = FALSE, suffix = c(".pd9", ".pd10"), keep = FALSE, na_matches = "na")
mp6<-left_join(pd11, pd12, by = "CowID", copy = FALSE, suffix = c(".pd11", ".pd12"), keep = FALSE, na_matches = "na")
mp7<-left_join(pd13, pd14, by = "CowID", copy = FALSE, suffix = c(".pd13", ".pd14"), keep = FALSE, na_matches = "na")
mp8<-left_join(pd15, pd16, by = "CowID", copy = FALSE, suffix = c(".pd15", ".pd16"), keep = FALSE, na_matches = "na")
mp9<-left_join(pd17, pd18, by = "CowID", copy = FALSE, suffix = c(".pd17", ".pd18"), keep = FALSE, na_matches = "na")
mp10<-left_join(pd19, pd20, by = "CowID", copy = FALSE, suffix = c(".pd19", ".pd20"), keep = FALSE, na_matches = "na")
mp11<-left_join(pd21, pd22, by = "CowID", copy = FALSE, suffix = c(".pd21", ".pd22"), keep = FALSE, na_matches = "na")
mp12<-left_join(pd23, pd24, by = "CowID", copy = FALSE, suffix = c(".pd23", ".pd24"), keep = FALSE, na_matches = "na")

mp14<-left_join(mp1, mp2, by = "CowID", copy = FALSE, suffix = c(".mp1", ".mp2"), keep = FALSE, na_matches = "na")
mp15<-left_join(mp3, mp4, by = "CowID", copy = FALSE, suffix = c(".mp3", ".mp4"), keep = FALSE, na_matches = "na")
mp16<-left_join(mp5, mp6, by = "CowID", copy = FALSE, suffix = c(".mp5", ".mp6"), keep = FALSE, na_matches = "na")
mp17<-left_join(mp7, mp8, by = "CowID", copy = FALSE, suffix = c(".mp7", ".mp8"), keep = FALSE, na_matches = "na")
mp18<-left_join(mp9, mp10, by = "CowID", copy = FALSE, suffix = c(".mp9", ".mp10"), keep = FALSE, na_matches = "na")
mp19<-left_join(mp11, mp12, by = "CowID", copy = FALSE, suffix = c(".mp11", ".mp12"), keep = FALSE, na_matches = "na")

mp20<-left_join(mp14, mp15, by = "CowID", copy = FALSE, suffix = c(".mp14", ".mp15"), keep = FALSE, na_matches = "na")
mp21<-left_join(mp16, mp17, by = "CowID", copy = FALSE, suffix = c(".mp16", ".mp17"), keep = FALSE, na_matches = "na")
mp22<-left_join(mp18, mp19, by = "CowID", copy = FALSE, suffix = c(".mp18", ".mp19"), keep = FALSE, na_matches = "na")
mp23<-left_join(mp22, pd25, by = "CowID", copy = FALSE, suffix = c(".mp22", ".pd25"), keep = FALSE, na_matches = "na")

mp24<-left_join(mp20, mp21, by = "CowID", copy = FALSE, suffix = c(".mp20", ".mp21"), keep = FALSE, na_matches = "na")
mp25<-left_join(mp22, mp23, by = "CowID", copy = FALSE, suffix = c(".mp22", ".mp23"), keep = FALSE, na_matches = "na")

mp26<-left_join(mp24, mp25, by = "CowID", copy = FALSE, suffix = c(".mp24", ".mp25"), keep = FALSE, na_matches = "na")
mp13<-left_join(pd26, pd27, by = "CowID", copy = FALSE, suffix = c(".pd26", ".pd27"), keep = FALSE, na_matches = "na")
mp27<-left_join(mp26, mp13, by = "CowID", copy = FALSE, suffix = c(".mp26", ".mp13"), keep = FALSE, na_matches = "na")
```

### slagit ihop data frames + bytt namn på rubriker för att kunna sortera

```{r, echo =FALSE, include=FALSE}
list_df = list(pd1,pd2,pd3,pd4,pd5,pd6,pd7,pd8,pd9,pd10,pd11,pd12,pd13,pd14,pd15,pd16,pd17,pd18,pd19,pd20,pd21,pd22,pd23,pd24,pd25,pd26)
mptest <- list_df %>% reduce(full_join, by='CowID')
headings2 <- colnames(mptest)

mpny<-setnames(mptest, old = c(headings2), 
         new = c("CowID","TMnr.1","TMDate.1","KgMilk.1","FatPerc.1","ProtPerc.1","SCC.1","Urea.1","Jhkl.1","TMnr.2","TMDate.2","KgMilk.2","FatPerc.2","ProtPerc.2","SCC.2","Urea.2","Jhkl.2","TMnr.3","TMDate.3","KgMilk.3","FatPerc.3","ProtPerc.3","SCC.3","Urea.3","Jhkl.3","TMnr.4","TMDate.4","KgMilk.4","FatPerc.4","ProtPerc.4","SCC.4","Urea.4","Jhkl.4","TMnr.5","TMDate.5","KgMilk.5","FatPerc.5","ProtPerc.5","SCC.5","Urea.5","Jhkl.5","TMnr.6","TMDate.6","KgMilk.6","FatPerc.6","ProtPerc.6","SCC.6","Urea.6","Jhkl.6","TMnr.7","TMDate.7","KgMilk.7","FatPerc.7","ProtPerc.7","SCC.7","Urea.7","Jhkl.7","TMnr.8","TMDate.8","KgMilk.8","FatPerc.8","ProtPerc.8","SCC.8","Urea.8","Jhkl.8","TMnr.9","TMDate.9","KgMilk.9","FatPerc.9","ProtPerc.9","SCC.9","Urea.9","Jhkl.9","TMnr.10","TMDate.10","KgMilk.10","FatPerc.10","ProtPerc.10","SCC.10","Urea.10","Jhkl.10","TMnr.11","TMDate.11","KgMilk.11","FatPerc.11","ProtPerc.11","SCC.11","Urea.11","Jhkl.11","TMnr.12","TMDate.12","KgMilk.12","FatPerc.12","ProtPerc.12","SCC.12","Urea.12","Jhkl.12","TMnr.13","TMDate.13","KgMilk.13","FatPerc.13","ProtPerc.13","SCC.13","Urea.13","Jhkl.13","TMnr.14","TMDate.14","KgMilk.14","FatPerc.14","ProtPerc.14","SCC.14","Urea.14","Jhkl.14","TMnr.15","TMDate.15","KgMilk.15","FatPerc.15","ProtPerc.15","SCC.15","Urea.15","Jhkl.15","TMnr.16","TMDate.16","KgMilk.16","FatPerc.16","ProtPerc.16","SCC.16","Urea.16","Jhkl.16","TMnr.17","TMDate.17","KgMilk.17","FatPerc.17","ProtPerc.17","SCC.17","Urea.17","Jhkl.17","TMnr.18","TMDate.18","KgMilk.18","FatPerc.18","ProtPerc.18","SCC.18","Urea.18","Jhkl.18","TMnr.19","TMDate.19","KgMilk.19","FatPerc.19","ProtPerc.19","SCC.19","Urea.19","Jhkl.19","TMnr.20","TMDate.20","KgMilk.20","FatPerc.20","ProtPerc.20","SCC.20","Urea.20","Jhkl.20","TMnr.21","TMDate.21","KgMilk.21","FatPerc.21","ProtPerc.21","SCC.21","Urea.21","Jhkl.21","TMnr.22","TMDate.22","KgMilk.22","FatPerc.22","ProtPerc.22","SCC.22","Urea.22","Jhkl.22","TMnr.23","TMDate.23","KgMilk.23","FatPerc.23","ProtPerc.23","SCC.23","Urea.23","Jhkl.23","TMnr.24","TMDate.24","KgMilk.24","FatPerc.24","ProtPerc.24","SCC.24","Urea.24","Jhkl.24","TMnr.25","TMDate.25","KgMilk.25","FatPerc.25","ProtPerc.25","SCC.25","Urea.25","Jhkl.25","TMnr.26","TMDate.26","KgMilk.26","FatPerc.26","ProtPerc.26","SCC.26","Urea.26","Jhkl.26"))
mpsy<-mpny[,sort(colnames(mpny))]
mpsy<-unique(mpsy)
```

### Subset med respektive provmjölknigsvariabel - ta fram provmjölkningsvariabler endast för korna i försök

Vad vill jag ha ut?

Felkoll =\> för många rader... Y1224 och Y1254 (rad) var dubletter - provmjölkningar som registrerats 2 ggr med olika resultat, provmj nr 20 och 18. =\> tar bort de två dublettraderna med 0 kg mjölk, 0 kg fett, 0 kg prot osv.. och spara de med registreringar.

1.  Felkoll - klart
2.  Räkna ut ECM - klart
3.  Räkna ut DIM mellan provmjölkningar samt från kalvn =\> första provmj och från sista provmj till sin
4.  avkastning vid sista provmjölknig 20-50 dgr innan sin.
5.  laktationsavkastning enligt Sergant
6.  mjölkmängd/dag i KI

TMy\<-TMx[-c(594,617),] - nya nummer efter att I:s andrakalvare exkluderats =\> stämmer nu även om det visas 657 pga det hänvisar till TMx innan sorterat bort dessa dubbletter.

```{r, echo =FALSE, include=FALSE}
x<-mD2[c(1)]
TMx<-left_join(x, mpsy, by = "CowID", copy = FALSE, suffix = c("", ".1"), keep = FALSE, na_matches = "na")
TMy<-TMx[-c(594,617),]
```

### Vänsterjustera rader som har NA som första TM resultat (pga testar att mjölkas eller annat..)

För de som är NA: Förskjut värdena från första raden och lägg som sista istället =\> flytta hela kolumnen och döp om alla kolumner

```{r}
fat<-TMy[c(1:27)]
fat<-fat[,c(1,2,13,21:27,3:12,14:20)]

fat[fat == 0] <- NA
fat.NA<-fat[which(is.na(fat$FatPerc.1)),]
fat.NA<-fat.NA[,c(1,3:27,2)]
headings4 <- colnames(fat.NA)
fat.NA<-setnames(fat.NA, old = c(headings4), 
         new = c("CowID","FatPerc.1","FatPerc.2","FatPerc.3","FatPerc.4","FatPerc.5","FatPerc.6","FatPerc.7","FatPerc.8","FatPerc.9","FatPerc.10","FatPerc.11","FatPerc.12","FatPerc.13","FatPerc.14","FatPerc.15","FatPerc.16","FatPerc.17","FatPerc.18","FatPerc.19","FatPerc.20","FatPerc.21","FatPerc.22","FatPerc.23","FatPerc.24","FatPerc.25","FatPerc.26"))

fat.full<-fat[which(fat$FatPerc.1>0),]
fat<-rbind(fat.full,fat.NA)
fat<-fat[order(fat$CowID),]
```

```{r}
milk<-TMy[c(1,54:79)]
milk<-milk[,c(1,2,13,21:27,3:12,14:20)]

milk[milk == 0] <- NA
milk.NA<-milk[which(is.na(milk$KgMilk.1)),]
milk.NA<-milk.NA[,c(1,3:27,2)]
headings5 <- colnames(milk.NA)
milk.NA<-setnames(milk.NA, old = c(headings5), 
         new = c("CowID","KgMilk.1","KgMilk.2","KgMilk.3","KgMilk.4","KgMilk.5","KgMilk.6","KgMilk.7","KgMilk.8","KgMilk.9","KgMilk.10","KgMilk.11","KgMilk.12","KgMilk.13","KgMilk.14","KgMilk.15","KgMilk.16","KgMilk.17","KgMilk.18","KgMilk.19","KgMilk.20","KgMilk.21","KgMilk.22","KgMilk.23","KgMilk.24","KgMilk.25","KgMilk.26"))

milk.full<-milk[which(milk$KgMilk.1 >0),]

milk<-rbind(milk.NA,milk.full)
milk<-milk[order(milk$CowID),]
```

```{r}
prot<-TMy[c(1,80:105)]
prot<-prot[,c(1,2,13,21:27,3:12,14:20)]

prot[prot == 0] <- NA
prot.NA<-prot[which(is.na(prot$ProtPerc.1)),]
prot.NA<-prot.NA[,c(1,3:27,2)]
headings6 <- colnames(prot.NA)
prot.NA<-setnames(prot.NA, old = c(headings6), 
         new = c("CowID","ProtPerc.1","ProtPerc.2","ProtPerc.3","ProtPerc.4","ProtPerc.5","ProtPerc.6","ProtPerc.7","ProtPerc.8","ProtPerc.9","ProtPerc.10","ProtPerc.11","ProtPerc.12","ProtPerc.13","ProtPerc.14","ProtPerc.15","ProtPerc.16","ProtPerc.17","ProtPerc.18","ProtPerc.19","ProtPerc.20","ProtPerc.21","ProtPerc.22","ProtPerc.23","ProtPerc.24","ProtPerc.25","ProtPerc.26"))

prot.full<-prot[which(prot$ProtPerc.1>0),]
prot<-rbind(prot.NA,prot.full)
prot<-prot[order(prot$"CowID"),]
```

### Felkoll NA's + sortera ut vilka som ska vänsterjusteras

```{r}
v<-fat.NA$CowID
w<-prot.NA$CowID
q<-milk.NA$CowID
t<-cbind(v,w,q)
t<-as.data.frame(t)
t$r<-ifelse(t$v == t$w ,"ok","Fel")
t$s<-ifelse(t$v == t$q ,"ok","Fel")
t$CowID<-t$v
```

ok fat, prot och milk har samma värden som NA - bra!

### nästa steg: Se till att värdena för Urea, jhkl datum, SCC (men ej TMnr) också justeras för dessa kor

det betyder att värde där =is NA behöver filtreras fram först vänsterförskjut v? eller göra en kolumn för isNA fatperc1? måste kunna filtrera fram både med och utan och behandla dataseten olika innan de mergas igen..

```{r, echo =FALSE, include=FALSE}
Urea<-TMy[c(1,184:209)]
Urea<-Urea[,c(1,2,13,21:27,3:12,14:20)]
Urea[Urea == 0] <- NA
Urea<-left_join(Urea, t, by = "CowID", copy = FALSE, suffix = c("", ".t"), keep = FALSE, na_matches = "na")
Urea<-Urea[(c(1:28))]
Urea$v<-ifelse(is.na(Urea$v),0,1) #0 =NA, 1 =not NA
Urea.NA<-filter(Urea, v==1) #
Urea.full<-filter(Urea, v==0)

Urea.NA<-Urea.NA[,c(1,3:27,2,28)]
headings7 <- colnames(Urea.NA)
Urea.NA<-setnames(Urea.NA, old = c(headings7), 
         new = c("CowID","Urea.1","Urea.2","Urea.3","Urea.4","Urea.5","Urea.6","Urea.7","Urea.8","Urea.9","Urea.10","Urea.11","Urea.12","Urea.13","Urea.14","Urea.15","Urea.16","Urea.17","Urea.18","Urea.19","Urea.20","Urea.21","Urea.22","Urea.23","Urea.24","Urea.25","Urea.26","v"))
Urea<-rbind(Urea.NA,Urea.full)
Urea<-Urea[order(Urea$CowID),]
```

### 203 st - inte samma - fler men de andra får vara så - ok.

```{r, echo =FALSE, include=FALSE}
SCC<-TMy[c(1,106:131)]
SCC<-SCC[,c(1,2,13,21:27,3:12,14:20)]
SCC[SCC == 0] <- NA
SCC<-left_join(SCC, t, by = "CowID", copy = FALSE, suffix = c("", ".t"), keep = FALSE, na_matches = "na")
SCC<-SCC[(c(1:28))]
SCC$v<-ifelse(is.na(SCC$v),0,1) #0 =NA, 1 =not NA
SCC.NA<-filter(SCC, v==1)
SCC.full<-filter(SCC, v==0)

SCC.NA<-SCC.NA[,c(1,3:27,2,28)]
headings8 <- colnames(SCC.NA)
SCC.NA<-setnames(SCC.NA, old = c(headings8), 
         new = c("CowID","SCC.1","SCC.2","SCC.3","SCC.4","SCC.5","SCC.6","SCC.7","SCC.8","SCC.9","SCC.10","SCC.11","SCC.12","SCC.13","SCC.14","SCC.15","SCC.16","SCC.17","SCC.18","SCC.19","SCC.20","SCC.21","SCC.22","SCC.23","SCC.24","SCC.25","SCC.26","v"))
SCC<-rbind(SCC.NA,SCC.full)
SCC<-SCC[order(SCC$CowID),]
```

### 205 st - inte samma - fler men de andra får vara så - ok.

```{r, echo =FALSE, include=FALSE}
jhkl<-TMy[c(1,28:53)]
jhkl<-jhkl[,c(1,2,13,21:27,3:12,14:20)]
jhkl<-left_join(jhkl, t, by = "CowID", copy = FALSE, suffix = c("", ".t"), keep = FALSE, na_matches = "na")
jhkl<-jhkl[(c(1:28))]
jhkl$v<-ifelse(is.na(jhkl$v),0,1) #0 =NA, 1 =not NA
jhkl.NA<-filter(jhkl, v==1)
jhkl.full<-filter(jhkl, v==0)

jhkl.NA<-jhkl.NA[,c(1,3:27,2,28)]
headings9 <- colnames(jhkl.NA)
jhkl.NA<-setnames(jhkl.NA, old = c(headings9), 
         new = c("CowID","Jhkl.1","Jhkl.2","Jhkl.3","Jhkl.4","Jhkl.5","Jhkl.6","Jhkl.7","Jhkl.8","Jhkl.9","Jhkl.10","Jhkl.11","Jhkl.12","Jhkl.13","Jhkl.14","Jhkl.15","Jhkl.16","Jhkl.17","Jhkl.18","Jhkl.19","Jhkl.20","Jhkl.21","Jhkl.22","Jhkl.23","Jhkl.24","Jhkl.25","Jhkl.26","v"))
jhkl<-rbind(jhkl.NA,jhkl.full)
jhkl<-jhkl[order(jhkl$CowID),]
```

### ingen ko har fått jhkl vid fösta tm! - inte samma - fler men de andra får vara så - ok.

```{r, echo =FALSE, include=FALSE}
TMDate<-TMy[c(1,132:157)]
TMDate<-TMDate[,c(1,2,13,21:27,3:12,14:20)]

TMDate<-left_join(TMDate, t, by = "CowID", copy = FALSE, suffix = c("", ".t"), keep = FALSE, na_matches = "na")
TMDate<-TMDate[(c(1:28))]
TMDate$v<-ifelse(is.na(TMDate$v),0,1) #0 =NA, 1 =not NA
TMDate.NA<-filter(TMDate, v==1)
TMDate.full<-filter(TMDate, v==0)

TMDate.NA<-TMDate.NA[,c(1,3:27,2,28)]
headings9 <- colnames(TMDate.NA)
TMDate.NA<-setnames(TMDate.NA, old = c(headings9), 
         new = c("CowID","TMDate.1","TMDate.2","TMDate.3","TMDate.4","TMDate.5","TMDate.6","TMDate.7","TMDate.8","TMDate.9","TMDate.10","TMDate.11","TMDate.12","TMDate.13","TMDate.14","TMDate.15","TMDate.16","TMDate.17","TMDate.18","TMDate.19","TMDate.20","TMDate.21","TMDate.22","TMDate.23","TMDate.24","TMDate.25","TMDate.26","v"))
TMDate<-rbind(TMDate.NA,TMDate.full)
TMDate<-TMDate[order(TMDate$CowID),]
```

### Bara 9 djur som ej varit provmjölkade alls =\> trol utgtt i samband med kalvning - inte samma

Nästan alla har TM date - men har nu vänsterjusterats så första utan registreringar inte räknas för de 109 kor det gäller.

### Räkna ut ECM per provmjölkning

Sjaunja 1990 (B): kg ECM = kg yield \* ((38.3 \* fat (g/kg) + 24,2 \* protein (g/kg) + 783.2/ 3140) 1. gör om mjölk till kg = / 10 2. gör om fat + prot till % = / 10 3. stoppa in i formeln..

Formula: ICAR: ( based on Sjaunja equation, 1990) From solids expressed as %: ECM = [(fat content, % \* 383 + protein content, % \* 242 + 783.2)/3140]\*milk yield, kg

```{r}
milk.kg<-milk
milk.kg<-cbind(milk.kg[c(1)],milk.kg[c(2:27)]/10)
fat.p<-fat
fat.p<-cbind(fat.p[c(1)],fat.p[c(2:27)]/10)
prot.p<-prot
prot.p<-cbind(prot.p[c(1)],prot.p[c(2:27)]/10)

ECM<-cbind(milk.kg[c(1)],(milk.kg[c(2:27)]*((383 * (fat.p[c(2:27)]) + 242 * (prot.p[c(2:27)]) + 783.2)/3140)))
headings3<- colnames(ECM)
ECM<-setnames(ECM, old = c(headings3), 
         new = c("CowID","Kg.ECM.1","Kg.ECM.2","Kg.ECM.3","	Kg.ECM.4","	Kg.ECM.5","	Kg.ECM.6","	Kg.ECM.7","	Kg.ECM.8","	Kg.ECM.9","	Kg.ECM.10","	Kg.ECM.11","	Kg.ECM.12","	Kg.ECM.13","Kg.ECM.14","Kg.ECM.15","Kg.ECM.16","Kg.ECM.17","Kg.ECM.18","Kg.ECM.19","Kg.ECM.20","Kg.ECM.21","Kg.ECM.22","Kg.ECM.23","Kg.ECM.24","Kg.ECM.25","Kg.ECM.26"))
```

## Räkna ut DIM mellan provmjölkningar (samt sin och kalvdat)

1.  Ta fram datum endast för laktation 1!
2.  göra om till rätt sorts datum
3.  Räkna fram sista provmjölkning lakt 1

```{r}
k.date<-mk3hiln[c(1,3,8,13,22,32:33)]
Date<-cbind(k.date,TMDate[c(2:26)])
Date$Calvingdate.1<-as.Date(as.character(as.POSIXct(Date$Calvingdate.1)))
Date$Calvingdate.2<-as.Date(as.character(as.POSIXct(Date$Calvingdate.2)))
Date$Calvingdate.3<-as.Date(as.character(as.POSIXct(Date$Calvingdate.3)))
Date$TMDate.1[Date$TMDate.1>Date$Calvingdate.2]<-NA
Date$TMDate.2[Date$TMDate.2>Date$Calvingdate.2]<-NA
Date$TMDate.3[Date$TMDate.3>Date$Calvingdate.2]<-NA
Date$TMDate.4[Date$TMDate.4>Date$Calvingdate.2]<-NA
Date$TMDate.5[Date$TMDate.5>Date$Calvingdate.2]<-NA
Date$TMDate.6[Date$TMDate.6>Date$Calvingdate.2]<-NA
Date$TMDate.7[Date$TMDate.7>Date$Calvingdate.2]<-NA
Date$TMDate.8[Date$TMDate.8>Date$Calvingdate.2]<-NA
Date$TMDate.9[Date$TMDate.9>Date$Calvingdate.2]<-NA
Date$TMDate.10[Date$TMDate.10>Date$Calvingdate.2]<-NA
Date$TMDate.11[Date$TMDate.11>Date$Calvingdate.2]<-NA
Date$TMDate.12[Date$TMDate.12>Date$Calvingdate.2]<-NA
Date$TMDate.13[Date$TMDate.13>Date$Calvingdate.2]<-NA
Date$TMDate.14[Date$TMDate.14>Date$Calvingdate.2]<-NA
Date$TMDate.15[Date$TMDate.15>Date$Calvingdate.2]<-NA
Date$TMDate.16[Date$TMDate.16>Date$Calvingdate.2]<-NA
Date$TMDate.17[Date$TMDate.17>Date$Calvingdate.2]<-NA
Date$TMDate.18[Date$TMDate.18>Date$Calvingdate.2]<-NA
Date$TMDate.19[Date$TMDate.19>Date$Calvingdate.2]<-NA
Date$TMDate.20[Date$TMDate.20>Date$Calvingdate.2]<-NA
Date$TMDate.21[Date$TMDate.21>Date$Calvingdate.2]<-NA
Date$TMDate.22[Date$TMDate.22>Date$Calvingdate.2]<-NA
Date$TMDate.23[Date$TMDate.23>Date$Calvingdate.2]<-NA
Date$TMDate.24[Date$TMDate.24>Date$Calvingdate.2]<-NA
Date$TMDate.25[Date$TMDate.25>Date$Calvingdate.2]<-NA
Date$TMDate.1<-as.Date(as.character(as.POSIXct(Date$TMDate.1)))
Date$TMDate.2<-as.Date(as.character(as.POSIXct(Date$TMDate.2)))
Date$TMDate.3<-as.Date(as.character(as.POSIXct(Date$TMDate.3)))
Date$TMDate.4<-as.Date(as.character(as.POSIXct(Date$TMDate.4)))
Date$TMDate.5<-as.Date(as.character(as.POSIXct(Date$TMDate.5)))
Date$TMDate.6<-as.Date(as.character(as.POSIXct(Date$TMDate.6)))
Date$TMDate.7<-as.Date(as.character(as.POSIXct(Date$TMDate.7)))
Date$TMDate.8<-as.Date(as.character(as.POSIXct(Date$TMDate.8)))
Date$TMDate.9<-as.Date(as.character(as.POSIXct(Date$TMDate.9)))
Date$TMDate.10<-as.Date(as.character(as.POSIXct(Date$TMDate.10)))
Date$TMDate.11<-as.Date(as.character(as.POSIXct(Date$TMDate.11)))
Date$TMDate.12<-as.Date(as.character(as.POSIXct(Date$TMDate.12)))
Date$TMDate.13<-as.Date(as.character(as.POSIXct(Date$TMDate.13)))
Date$TMDate.14<-as.Date(as.character(as.POSIXct(Date$TMDate.14)))
Date$TMDate.15<-as.Date(as.character(as.POSIXct(Date$TMDate.15)))
Date$TMDate.16<-as.Date(as.character(as.POSIXct(Date$TMDate.16)))
Date$TMDate.17<-as.Date(as.character(as.POSIXct(Date$TMDate.17)))
Date$TMDate.18<-as.Date(as.character(as.POSIXct(Date$TMDate.18)))
Date$TMDate.19<-as.Date(as.character(as.POSIXct(Date$TMDate.19)))
Date$TMDate.20<-as.Date(as.character(as.POSIXct(Date$TMDate.20)))
Date$TMDate.21<-as.Date(as.character(as.POSIXct(Date$TMDate.21)))
Date$TMDate.22<-as.Date(as.character(as.POSIXct(Date$TMDate.22)))
Date$TMDate.23<-as.Date(as.character(as.POSIXct(Date$TMDate.23)))
Date$TMDate.24<-as.Date(as.character(as.POSIXct(Date$TMDate.24)))
Date$TMDate.25<-as.Date(as.character(as.POSIXct(Date$TMDate.25)))

Date$DryDate<-as.Date(as.character(as.POSIXct(Date$DryDate)))
Date$DryDate.2<-as.Date(as.character(as.POSIXct(Date$DryDate.2)))

# Räkna ut sista provmjölkning och göra om till datumformat
lastValue <- function(x)   tail(x[!is.na(x)], 1)
Date$last.TM<-apply(Date[c(7:32)], 1, lastValue)
Date$last.TM<-as.Date(as.character(Date$last.TM))
```


### Räkna ut om utgått lakt 1,2 eller 3

```{r}
DIM<-Date[c(1:9,33)] # TM 1 - 22 - inga observationer på TM 23-25

DIM$Out.1<-ifelse(is.na(DIM$Calvingdate.2),as.Date(as.character(DIM$OutDate)),NA)
DIM$Out.2<-ifelse(DIM$OutDate>=DIM$Calvingdate.2 & DIM$OutDate<DIM$Calvingdate.3|DIM$OutDate>DIM$Calvingdate.2 & is.na(DIM$Calvingdate.3),as.Date(as.character(DIM$OutDate)),NA)
DIM$Out.3<-ifelse(DIM$OutDate>=DIM$Calvingdate.3,as.Date(as.character(DIM$OutDate)),NA)
DIM$Out.1<-as.Date(DIM$Out.1, origin = '1970-01-01')
DIM$Out.2<-as.Date(DIM$Out.2, origin = '1970-01-01')
DIM$Out.3<-as.Date(DIM$Out.3, origin = '1970-01-01')
```

## Uträkning av intervall - bara intervall

```{r}
DIM$Int.1<-ifelse(is.na(Date$TMDate.1),NA,(Date$TMDate.1 - Date$Calvingdate.1))
DIM.1<-DIM
DIM.1$Int.2<-as.numeric(Date$TMDate.2-Date$TMDate.1)
DIM.1$Int.3<-as.numeric(Date$TMDate.3-Date$TMDate.2)
DIM.1$Int.4<-as.numeric(Date$TMDate.4-Date$TMDate.3)
DIM.1$Int.5<-as.numeric(Date$TMDate.5-Date$TMDate.4)
DIM.1$Int.6<-as.numeric(Date$TMDate.6-Date$TMDate.5)
DIM.1$Int.7<-as.numeric(Date$TMDate.7-Date$TMDate.6)
DIM.1$Int.8<-as.numeric(Date$TMDate.8-Date$TMDate.7)
DIM.1$Int.9<-as.numeric(Date$TMDate.9-Date$TMDate.8)
DIM.1$Int.10<-as.numeric(Date$TMDate.10-Date$TMDate.9)
DIM.1$Int.11<-as.numeric(Date$TMDate.11-Date$TMDate.10)
DIM.1$Int.12<-as.numeric(Date$TMDate.12-Date$TMDate.11)
DIM.1$Int.13<-as.numeric(Date$TMDate.13-Date$TMDate.12)
DIM.1$Int.14<-as.numeric(Date$TMDate.14-Date$TMDate.13)
DIM.1$Int.15<-as.numeric(Date$TMDate.15-Date$TMDate.14)
DIM.1$Int.16<-as.numeric(Date$TMDate.16-Date$TMDate.15)
DIM.1$Int.17<-as.numeric(Date$TMDate.17-Date$TMDate.16)
DIM.1$Int.18<-as.numeric(Date$TMDate.18-Date$TMDate.17)
DIM.1$Int.19<-as.numeric(Date$TMDate.19-Date$TMDate.18)
DIM.1$Int.20<-as.numeric(Date$TMDate.20-Date$TMDate.19)
DIM.1$Int.21<-as.numeric(Date$TMDate.21-Date$TMDate.20)
DIM.1$Int.22<-as.numeric(Date$TMDate.22-Date$TMDate.21)

# Räkna ut sista intervallet
DIM.1$Last.Int<-ifelse(DIM.1$DryDate>DIM.1$last.TM & (!is.na(DIM.1$DryDate)),(DIM.1$DryDate-DIM.1$last.TM),
                       ifelse(is.na(DIM.1$Calvingdate.2) & (!is.na(DIM.1$Out.1)),(DIM.1$Out.1-DIM.1$last.TM),
                       ifelse((DIM.1$Calvingdate.2-DIM.1$last.TM)<15,(DIM.1$Calvingdate.2-DIM.1$last.TM),15)))

# Räkna ut sindatum 1
DIM.1$DryDate.1<-ifelse(is.na(DIM.1$last.TM),NA,
                        ifelse(DIM.1$DryDate>DIM.1$last.TM & (!is.na(DIM.1$DryDate)),DIM.1$DryDate,
                       ifelse(is.na(DIM.1$Calvingdate.2) & (!is.na(DIM.1$Out.1)),DIM.1$Out.1,
                       ifelse((DIM.1$Calvingdate.2-DIM.1$last.TM)<15,DIM.1$Calvingdate.2,DIM.1$last.TM+15))))
DIM.1$DryDate.1<-as.Date(DIM.1$DryDate.1, origin = '1970-01-01')
Good.dates<-DIM.1[c(1:13,36,37)]
Int.x<-DIM.1[c(1,14:36)]
```

## Få till kg mjölk, fat, prot och ECM endast för lakt 1

```{r}
TMDate<-Date[c(1,8:32)]
```

### Se till att det endast är TM från lakt 1 med

```{r}
kg.milk.1<-milk.kg
kg.milk.1$KgMilk.1<-ifelse(is.na(TMDate$TMDate.1),NA,milk.kg$KgMilk.1)
kg.milk.1$KgMilk.2<-ifelse(is.na(TMDate$TMDate.2),NA,milk.kg$KgMilk.2)
kg.milk.1$KgMilk.3<-ifelse(is.na(TMDate$TMDate.3),NA,milk.kg$KgMilk.3)
kg.milk.1$KgMilk.4<-ifelse(is.na(TMDate$TMDate.4),NA,milk.kg$KgMilk.4)
kg.milk.1$KgMilk.5<-ifelse(is.na(TMDate$TMDate.5),NA,milk.kg$KgMilk.5)
kg.milk.1$KgMilk.6<-ifelse(is.na(TMDate$TMDate.6),NA,milk.kg$KgMilk.6)
kg.milk.1$KgMilk.7<-ifelse(is.na(TMDate$TMDate.7),NA,milk.kg$KgMilk.7)
kg.milk.1$KgMilk.8<-ifelse(is.na(TMDate$TMDate.8),NA,milk.kg$KgMilk.8)
kg.milk.1$KgMilk.9<-ifelse(is.na(TMDate$TMDate.9),NA,milk.kg$KgMilk.9)
kg.milk.1$KgMilk.10<-ifelse(is.na(TMDate$TMDate.10),NA,milk.kg$KgMilk.10)
kg.milk.1$KgMilk.11<-ifelse(is.na(TMDate$TMDate.11),NA,milk.kg$KgMilk.11)
kg.milk.1$KgMilk.12<-ifelse(is.na(TMDate$TMDate.12),NA,milk.kg$KgMilk.12)
kg.milk.1$KgMilk.13<-ifelse(is.na(TMDate$TMDate.13),NA,milk.kg$KgMilk.13)
kg.milk.1$KgMilk.14<-ifelse(is.na(TMDate$TMDate.14),NA,milk.kg$KgMilk.14)
kg.milk.1$KgMilk.15<-ifelse(is.na(TMDate$TMDate.15),NA,milk.kg$KgMilk.15)
kg.milk.1$KgMilk.16<-ifelse(is.na(TMDate$TMDate.16),NA,milk.kg$KgMilk.16)
kg.milk.1$KgMilk.17<-ifelse(is.na(TMDate$TMDate.17),NA,milk.kg$KgMilk.17)
kg.milk.1$KgMilk.18<-ifelse(is.na(TMDate$TMDate.18),NA,milk.kg$KgMilk.18)
kg.milk.1$KgMilk.19<-ifelse(is.na(TMDate$TMDate.19),NA,milk.kg$KgMilk.19)
kg.milk.1$KgMilk.20<-ifelse(is.na(TMDate$TMDate.20),NA,milk.kg$KgMilk.20)
kg.milk.1$KgMilk.21<-ifelse(is.na(TMDate$TMDate.21),NA,milk.kg$KgMilk.21)
kg.milk.1$KgMilk.22<-ifelse(is.na(TMDate$TMDate.22),NA,milk.kg$KgMilk.22)
kg.milk.1$KgMilk.23<-ifelse(is.na(TMDate$TMDate.23),NA,milk.kg$KgMilk.23)
kg.milk.1$KgMilk.24<-ifelse(is.na(TMDate$TMDate.24),NA,milk.kg$KgMilk.24)
kg.milk.1$KgMilk.25<-ifelse(is.na(TMDate$TMDate.25),NA,milk.kg$KgMilk.25)


kg.milk.1<-kg.milk.1[c(1:23)]

lastValue <- function(x)   tail(x[!is.na(x)], 1)
kg.milk.1$KgMilk.last<-apply(kg.milk.1[c(2:23)], 1, lastValue)
kg.milk.1$KgMilk.last<-as.numeric(kg.milk.1$KgMilk.last)
```

### Nytt försök bara kg mjölk lakt 1


```{r}
kg.milk.1<-milk.kg
kg.milk.1$KgMilk.1<-ifelse(is.na(TMDate$TMDate.1),NA,milk.kg$KgMilk.1)
kg.milk.1$KgMilk.2<-ifelse(is.na(TMDate$TMDate.2),NA,milk.kg$KgMilk.2)
kg.milk.1$KgMilk.3<-ifelse(is.na(TMDate$TMDate.3),NA,milk.kg$KgMilk.3)
kg.milk.1$KgMilk.4<-ifelse(is.na(TMDate$TMDate.4),NA,milk.kg$KgMilk.4)
kg.milk.1$KgMilk.5<-ifelse(is.na(TMDate$TMDate.5),NA,milk.kg$KgMilk.5)
kg.milk.1$KgMilk.6<-ifelse(is.na(TMDate$TMDate.6),NA,milk.kg$KgMilk.6)
kg.milk.1$KgMilk.7<-ifelse(is.na(TMDate$TMDate.7),NA,milk.kg$KgMilk.7)
kg.milk.1$KgMilk.8<-ifelse(is.na(TMDate$TMDate.8),NA,milk.kg$KgMilk.8)
kg.milk.1$KgMilk.9<-ifelse(is.na(TMDate$TMDate.9),NA,milk.kg$KgMilk.9)
kg.milk.1$KgMilk.10<-ifelse(is.na(TMDate$TMDate.10),NA,milk.kg$KgMilk.10)
kg.milk.1$KgMilk.11<-ifelse(is.na(TMDate$TMDate.11),NA,milk.kg$KgMilk.11)
kg.milk.1$KgMilk.12<-ifelse(is.na(TMDate$TMDate.12),NA,milk.kg$KgMilk.12)
kg.milk.1$KgMilk.13<-ifelse(is.na(TMDate$TMDate.13),NA,milk.kg$KgMilk.13)
kg.milk.1$KgMilk.14<-ifelse(is.na(TMDate$TMDate.14),NA,milk.kg$KgMilk.14)
kg.milk.1$KgMilk.15<-ifelse(is.na(TMDate$TMDate.15),NA,milk.kg$KgMilk.15)
kg.milk.1$KgMilk.16<-ifelse(is.na(TMDate$TMDate.16),NA,milk.kg$KgMilk.16)
kg.milk.1$KgMilk.17<-ifelse(is.na(TMDate$TMDate.17),NA,milk.kg$KgMilk.17)
kg.milk.1$KgMilk.18<-ifelse(is.na(TMDate$TMDate.18),NA,milk.kg$KgMilk.18)
kg.milk.1$KgMilk.19<-ifelse(is.na(TMDate$TMDate.19),NA,milk.kg$KgMilk.19)
kg.milk.1$KgMilk.20<-ifelse(is.na(TMDate$TMDate.20),NA,milk.kg$KgMilk.20)
kg.milk.1$KgMilk.21<-ifelse(is.na(TMDate$TMDate.21),NA,milk.kg$KgMilk.21)
kg.milk.1$KgMilk.22<-ifelse(is.na(TMDate$TMDate.22),NA,milk.kg$KgMilk.22)
kg.milk.1$KgMilk.23<-ifelse(is.na(TMDate$TMDate.23),NA,milk.kg$KgMilk.23)
kg.milk.1$KgMilk.24<-ifelse(is.na(TMDate$TMDate.24),NA,milk.kg$KgMilk.24)
kg.milk.1$KgMilk.25<-ifelse(is.na(TMDate$TMDate.25),NA,milk.kg$KgMilk.25)


kg.milk.1<-kg.milk.1[c(1:23)]

lastValue <- function(x)   tail(x[!is.na(x)], 1)
kg.milk.1$KgMilk.last<-apply(kg.milk.1[c(2:23)], 1, lastValue)
kg.milk.1$KgMilk.last<-as.numeric(kg.milk.1$KgMilk.last)
```

## Hitta näst sista och tredje sista mjölkmängden
```{r}
secondLastValue <- function(x) {
  tail(x[!is.na(x)], 2)[1]
}

kg.milk.1$KgMilk.secondLast <- apply(kg.milk.1[c(2:23)], 1, secondLastValue)
kg.milk.1$KgMilk.secondLast <- as.numeric(kg.milk.1$KgMilk.secondLast)

thirdLastValue <- function(x) {
  tail(x[!is.na(x)], 3)[1]
}

kg.milk.1$KgMilk.thirdLast <- apply(kg.milk.1[c(2:23)], 1, thirdLastValue)
kg.milk.1$KgMilk.thirdLast <- as.numeric(kg.milk.1$KgMilk.thirdLast)
```

```{r}
#a<-kg.milk.1[c(1,24:26)]
# b<-Date.1[c(1,6,35:37)]
#c<-cbind(a,b[c(2:5)])
#write_xlsx(c, "Dry.off.yield.xlsx")
```



### Samma för fat - endast lakt 1

```{r}
Fat.1<-fat.p
Fat.1$FatPerc.1<-ifelse(is.na(kg.milk.1$KgMilk.1),NA,Fat.1$FatPerc.1)
Fat.1$FatPerc.2<-ifelse(is.na(kg.milk.1$KgMilk.2),NA,Fat.1$FatPerc.2)
Fat.1$FatPerc.3<-ifelse(is.na(kg.milk.1$KgMilk.3),NA,Fat.1$FatPerc.3)
Fat.1$FatPerc.4<-ifelse(is.na(kg.milk.1$KgMilk.4),NA,Fat.1$FatPerc.4)
Fat.1$FatPerc.5<-ifelse(is.na(kg.milk.1$KgMilk.5),NA,Fat.1$FatPerc.5)
Fat.1$FatPerc.6<-ifelse(is.na(kg.milk.1$KgMilk.6),NA,Fat.1$FatPerc.6)
Fat.1$FatPerc.7<-ifelse(is.na(kg.milk.1$KgMilk.7),NA,Fat.1$FatPerc.7)
Fat.1$FatPerc.8<-ifelse(is.na(kg.milk.1$KgMilk.8),NA,Fat.1$FatPerc.8)
Fat.1$FatPerc.9<-ifelse(is.na(kg.milk.1$KgMilk.9),NA,Fat.1$FatPerc.9)
Fat.1$FatPerc.10<-ifelse(is.na(kg.milk.1$KgMilk.10),NA,Fat.1$FatPerc.10)
Fat.1$FatPerc.11<-ifelse(is.na(kg.milk.1$KgMilk.11),NA,Fat.1$FatPerc.11)
Fat.1$FatPerc.12<-ifelse(is.na(kg.milk.1$KgMilk.12),NA,Fat.1$FatPerc.12)
Fat.1$FatPerc.13<-ifelse(is.na(kg.milk.1$KgMilk.13),NA,Fat.1$FatPerc.13)
Fat.1$FatPerc.14<-ifelse(is.na(kg.milk.1$KgMilk.14),NA,Fat.1$FatPerc.14)
Fat.1$FatPerc.15<-ifelse(is.na(kg.milk.1$KgMilk.15),NA,Fat.1$FatPerc.15)
Fat.1$FatPerc.16<-ifelse(is.na(kg.milk.1$KgMilk.16),NA,Fat.1$FatPerc.16)
Fat.1$FatPerc.17<-ifelse(is.na(kg.milk.1$KgMilk.17),NA,Fat.1$FatPerc.17)
Fat.1$FatPerc.18<-ifelse(is.na(kg.milk.1$KgMilk.18),NA,Fat.1$FatPerc.18)
Fat.1$FatPerc.19<-ifelse(is.na(kg.milk.1$KgMilk.19),NA,Fat.1$FatPerc.19)
Fat.1$FatPerc.20<-ifelse(is.na(kg.milk.1$KgMilk.20),NA,Fat.1$FatPerc.20)
Fat.1$FatPerc.21<-ifelse(is.na(kg.milk.1$KgMilk.21),NA,Fat.1$FatPerc.21)
Fat.1$FatPerc.22<-ifelse(is.na(kg.milk.1$KgMilk.22),NA,Fat.1$FatPerc.22)
Fat.1<-Fat.1[c(1:23)]

lastValue <- function(x)   tail(x[!is.na(x)], 1)
Fat.1$fat.last<-apply(Fat.1[c(2:23)], 1, lastValue)
Fat.1$fat.last<-as.numeric(Fat.1$fat.last)
```

### Samma för prot - endast lakt 1

```{r}
Prot.1<-prot.p
Prot.1$ProtPerc.1<-ifelse(is.na(kg.milk.1$KgMilk.1),NA,Prot.1$ProtPerc.1)
Prot.1$ProtPerc.2<-ifelse(is.na(kg.milk.1$KgMilk.2),NA,Prot.1$ProtPerc.2)
Prot.1$ProtPerc.3<-ifelse(is.na(kg.milk.1$KgMilk.3),NA,Prot.1$ProtPerc.3)
Prot.1$ProtPerc.4<-ifelse(is.na(kg.milk.1$KgMilk.4),NA,Prot.1$ProtPerc.4)
Prot.1$ProtPerc.5<-ifelse(is.na(kg.milk.1$KgMilk.5),NA,Prot.1$ProtPerc.5)
Prot.1$ProtPerc.6<-ifelse(is.na(kg.milk.1$KgMilk.6),NA,Prot.1$ProtPerc.6)
Prot.1$ProtPerc.7<-ifelse(is.na(kg.milk.1$KgMilk.7),NA,Prot.1$ProtPerc.7)
Prot.1$ProtPerc.8<-ifelse(is.na(kg.milk.1$KgMilk.8),NA,Prot.1$ProtPerc.8)
Prot.1$ProtPerc.9<-ifelse(is.na(kg.milk.1$KgMilk.9),NA,Prot.1$ProtPerc.9)
Prot.1$ProtPerc.10<-ifelse(is.na(kg.milk.1$KgMilk.10),NA,Prot.1$ProtPerc.10)
Prot.1$ProtPerc.11<-ifelse(is.na(kg.milk.1$KgMilk.11),NA,Prot.1$ProtPerc.11)
Prot.1$ProtPerc.12<-ifelse(is.na(kg.milk.1$KgMilk.12),NA,Prot.1$ProtPerc.12)
Prot.1$ProtPerc.13<-ifelse(is.na(kg.milk.1$KgMilk.13),NA,Prot.1$ProtPerc.13)
Prot.1$ProtPerc.14<-ifelse(is.na(kg.milk.1$KgMilk.14),NA,Prot.1$ProtPerc.14)
Prot.1$ProtPerc.15<-ifelse(is.na(kg.milk.1$KgMilk.15),NA,Prot.1$ProtPerc.15)
Prot.1$ProtPerc.16<-ifelse(is.na(kg.milk.1$KgMilk.16),NA,Prot.1$ProtPerc.16)
Prot.1$ProtPerc.17<-ifelse(is.na(kg.milk.1$KgMilk.17),NA,Prot.1$ProtPerc.17)
Prot.1$ProtPerc.18<-ifelse(is.na(kg.milk.1$KgMilk.18),NA,Prot.1$ProtPerc.18)
Prot.1$ProtPerc.19<-ifelse(is.na(kg.milk.1$KgMilk.19),NA,Prot.1$ProtPerc.19)
Prot.1$ProtPerc.20<-ifelse(is.na(kg.milk.1$KgMilk.20),NA,Prot.1$ProtPerc.20)
Prot.1$ProtPerc.21<-ifelse(is.na(kg.milk.1$KgMilk.21),NA,Prot.1$ProtPerc.21)
Prot.1$ProtPerc.22<-ifelse(is.na(kg.milk.1$KgMilk.22),NA,Prot.1$ProtPerc.22)
Prot.1<-Prot.1[c(1:23)]

lastValue <- function(x)   tail(x[!is.na(x)], 1)
Prot.1$prot.last<-apply(Prot.1[c(2:23)], 1, lastValue)
Prot.1$prot.last<-as.numeric(Prot.1$prot.last)
```

### Samma för SCC - endast lakt 1

```{r}
SCC.1<-SCC
SCC.1$SCC.1<-ifelse(is.na(kg.milk.1$KgMilk.1),NA,SCC.1$SCC.1)
SCC.1$SCC.2<-ifelse(is.na(kg.milk.1$KgMilk.2),NA,SCC.1$SCC.2)
SCC.1$SCC.3<-ifelse(is.na(kg.milk.1$KgMilk.3),NA,SCC.1$SCC.3)
SCC.1$SCC.4<-ifelse(is.na(kg.milk.1$KgMilk.4),NA,SCC.1$SCC.4)
SCC.1$SCC.5<-ifelse(is.na(kg.milk.1$KgMilk.5),NA,SCC.1$SCC.5)
SCC.1$SCC.6<-ifelse(is.na(kg.milk.1$KgMilk.6),NA,SCC.1$SCC.6)
SCC.1$SCC.7<-ifelse(is.na(kg.milk.1$KgMilk.7),NA,SCC.1$SCC.7)
SCC.1$SCC.8<-ifelse(is.na(kg.milk.1$KgMilk.8),NA,SCC.1$SCC.8)
SCC.1$SCC.9<-ifelse(is.na(kg.milk.1$KgMilk.9),NA,SCC.1$SCC.9)
SCC.1$SCC.10<-ifelse(is.na(kg.milk.1$KgMilk.10),NA,SCC.1$SCC.10)
SCC.1$SCC.11<-ifelse(is.na(kg.milk.1$KgMilk.11),NA,SCC.1$SCC.11)
SCC.1$SCC.12<-ifelse(is.na(kg.milk.1$KgMilk.12),NA,SCC.1$SCC.12)
SCC.1$SCC.13<-ifelse(is.na(kg.milk.1$KgMilk.13),NA,SCC.1$SCC.13)
SCC.1$SCC.14<-ifelse(is.na(kg.milk.1$KgMilk.14),NA,SCC.1$SCC.14)
SCC.1$SCC.15<-ifelse(is.na(kg.milk.1$KgMilk.15),NA,SCC.1$SCC.15)
SCC.1$SCC.16<-ifelse(is.na(kg.milk.1$KgMilk.16),NA,SCC.1$SCC.16)
SCC.1$SCC.17<-ifelse(is.na(kg.milk.1$KgMilk.17),NA,SCC.1$SCC.17)
SCC.1$SCC.18<-ifelse(is.na(kg.milk.1$KgMilk.18),NA,SCC.1$SCC.18)
SCC.1$SCC.19<-ifelse(is.na(kg.milk.1$KgMilk.19),NA,SCC.1$SCC.19)
SCC.1$SCC.20<-ifelse(is.na(kg.milk.1$KgMilk.20),NA,SCC.1$SCC.20)
SCC.1$SCC.21<-ifelse(is.na(kg.milk.1$KgMilk.21),NA,SCC.1$SCC.21)
SCC.1$SCC.22<-ifelse(is.na(kg.milk.1$KgMilk.22),NA,SCC.1$SCC.22)
SCC.1<-SCC.1[c(1:23)]

lastValue <- function(x)   tail(x[!is.na(x)], 1)
SCC.1$SCC.last<-apply(SCC.1[c(2:23)], 1, lastValue)
SCC.1$SCC.last<-as.numeric(SCC.1$SCC.last)
headings13<- colnames(SCC.1)
SCC.1<-setnames(SCC.1, old = c(headings13), 
         new = c("CowID","SCC.first","SCC.2","SCC.3","SCC.4","SCC.5","SCC.6","SCC.7","SCC.8","SCC.9","SCC.10","SCC.11","SCC.12","SCC.13","SCC.14","SCC.15","SCC.16","SCC.17","SCC.18","SCC.19","SCC.20","SCC.21","SCC.22","SCC.last"))
SCC.1x<-SCC.1[c(1,2,24)]

SCC.log<-SCC.1
SCC.log[c(2:24)]<-log(SCC.log[c(2:24)])
headings14<- colnames(SCC.log)
SCC.log<-setnames(SCC.log, old = c(headings14), 
         new = c("CowID","logSCC.first","logSCC.2","logSCC.3","logSCC.4","logSCC.5","logSCC.6","logSCC.7","logSCC.8","logSCC.9","logSCC.10","logSCC.11","logSCC.12","logSCC.13","logSCC.14","logSCC.15","logSCC.16","logSCC.17","logSCC.18","logSCC.19","logSCC.20","logSCC.21","logSCC.22","logSCC.last"))

SCC.x<-cbind(SCC.1x,SCC.log[c(2,24)])
```

### Samma för ECM - endast lakt 1
```{r}
ECM.1<-cbind(kg.milk.1[c(1)],(kg.milk.1[c(2:24)]*((383 * (Fat.1[c(2:24)]) + 242 * (Prot.1[c(2:24)]) + 783.2)/3140)))
headings10<- colnames(ECM.1)
ECM.1<-setnames(ECM.1, old = c(headings10), 
         new = c("CowID","Kg.ECM.1","Kg.ECM.2","Kg.ECM.3","Kg.ECM.4","Kg.ECM.5","Kg.ECM.6","Kg.ECM.7","Kg.ECM.8","Kg.ECM.9","Kg.ECM.10","Kg.ECM.11","Kg.ECM.12","Kg.ECM.13","Kg.ECM.14","Kg.ECM.15","Kg.ECM.16","Kg.ECM.17","Kg.ECM.18","Kg.ECM.19","Kg.ECM.20","Kg.ECM.21","Kg.ECM.22","Kg.ECM.last"))
```


### Skapa ett nytt datum-datset - se till att de stämmer med Kg milk - om MY saknas =\> NA

```{r}
Date.1<-Date[c(1,8:29)]
Date.1$TMDate.1<-ifelse(is.na(kg.milk.1$KgMilk.1),NA,Date.1$TMDate.1)
Date.1$TMDate.2<-ifelse(is.na(kg.milk.1$KgMilk.2),NA,Date.1$TMDate.2)
Date.1$TMDate.3<-ifelse(is.na(kg.milk.1$KgMilk.3),NA,Date.1$TMDate.3)
Date.1$TMDate.4<-ifelse(is.na(kg.milk.1$KgMilk.4),NA,Date.1$TMDate.4)
Date.1$TMDate.5<-ifelse(is.na(kg.milk.1$KgMilk.5),NA,Date.1$TMDate.5)
Date.1$TMDate.6<-ifelse(is.na(kg.milk.1$KgMilk.6),NA,Date.1$TMDate.6)
Date.1$TMDate.7<-ifelse(is.na(kg.milk.1$KgMilk.7),NA,Date.1$TMDate.7)
Date.1$TMDate.8<-ifelse(is.na(kg.milk.1$KgMilk.8),NA,Date.1$TMDate.8)
Date.1$TMDate.9<-ifelse(is.na(kg.milk.1$KgMilk.9),NA,Date.1$TMDate.9)
Date.1$TMDate.10<-ifelse(is.na(kg.milk.1$KgMilk.10),NA,Date.1$TMDate.10)
Date.1$TMDate.11<-ifelse(is.na(kg.milk.1$KgMilk.11),NA,Date.1$TMDate.11)
Date.1$TMDate.12<-ifelse(is.na(kg.milk.1$KgMilk.12),NA,Date.1$TMDate.12)
Date.1$TMDate.13<-ifelse(is.na(kg.milk.1$KgMilk.13),NA,Date.1$TMDate.13)
Date.1$TMDate.14<-ifelse(is.na(kg.milk.1$KgMilk.14),NA,Date.1$TMDate.14)
Date.1$TMDate.15<-ifelse(is.na(kg.milk.1$KgMilk.15),NA,Date.1$TMDate.15)
Date.1$TMDate.16<-ifelse(is.na(kg.milk.1$KgMilk.16),NA,Date.1$TMDate.16)
Date.1$TMDate.17<-ifelse(is.na(kg.milk.1$KgMilk.17),NA,Date.1$TMDate.17)
Date.1$TMDate.18<-ifelse(is.na(kg.milk.1$KgMilk.18),NA,Date.1$TMDate.18)
Date.1$TMDate.19<-ifelse(is.na(kg.milk.1$KgMilk.19),NA,Date.1$TMDate.19)
Date.1$TMDate.20<-ifelse(is.na(kg.milk.1$KgMilk.20),NA,Date.1$TMDate.20)
Date.1$TMDate.21<-ifelse(is.na(kg.milk.1$KgMilk.21),NA,Date.1$TMDate.21)
Date.1$TMDate.22<-ifelse(is.na(kg.milk.1$KgMilk.22),NA,Date.1$TMDate.22)
Date.1<-Date.1[c(1:23)]

Date.1$TMDate.1<-as.Date(Date.1$TMDate.1, origin = '1970-01-01')
Date.1$TMDate.2<-as.Date(Date.1$TMDate.2, origin = '1970-01-01')
Date.1$TMDate.3<-as.Date(Date.1$TMDate.3, origin = '1970-01-01')
Date.1$TMDate.4<-as.Date(Date.1$TMDate.4, origin = '1970-01-01')
Date.1$TMDate.5<-as.Date(Date.1$TMDate.5, origin = '1970-01-01')
Date.1$TMDate.6<-as.Date(Date.1$TMDate.6, origin = '1970-01-01')
Date.1$TMDate.7<-as.Date(Date.1$TMDate.7, origin = '1970-01-01')
Date.1$TMDate.8<-as.Date(Date.1$TMDate.8, origin = '1970-01-01')
Date.1$TMDate.9<-as.Date(Date.1$TMDate.9, origin = '1970-01-01')
Date.1$TMDate.10<-as.Date(Date.1$TMDate.10, origin = '1970-01-01')
Date.1$TMDate.11<-as.Date(Date.1$TMDate.11, origin = '1970-01-01')
Date.1$TMDate.12<-as.Date(Date.1$TMDate.12, origin = '1970-01-01')
Date.1$TMDate.13<-as.Date(Date.1$TMDate.13, origin = '1970-01-01')
Date.1$TMDate.14<-as.Date(Date.1$TMDate.14, origin = '1970-01-01')
Date.1$TMDate.15<-as.Date(Date.1$TMDate.15, origin = '1970-01-01')
Date.1$TMDate.16<-as.Date(Date.1$TMDate.16, origin = '1970-01-01')
Date.1$TMDate.17<-as.Date(Date.1$TMDate.17, origin = '1970-01-01')
Date.1$TMDate.18<-as.Date(Date.1$TMDate.18, origin = '1970-01-01')
Date.1$TMDate.19<-as.Date(Date.1$TMDate.19, origin = '1970-01-01')
Date.1$TMDate.20<-as.Date(Date.1$TMDate.20, origin = '1970-01-01')
Date.1$TMDate.21<-as.Date(Date.1$TMDate.21, origin = '1970-01-01')
Date.1$TMDate.22<-as.Date(Date.1$TMDate.22, origin = '1970-01-01')

Date.1<-cbind(Good.dates[c(1:9,11:13)],Date.1[c(-1)])

# Räkna ut sista intervallet
DIM.1$Last.Int<-ifelse(DIM.1$DryDate>DIM.1$last.TM & (!is.na(DIM.1$DryDate)),(DIM.1$DryDate-DIM.1$last.TM),
                       ifelse(is.na(DIM.1$Calvingdate.2) & (!is.na(DIM.1$Out.1)),(DIM.1$Out.1-DIM.1$last.TM),
                       ifelse((DIM.1$Calvingdate.2-DIM.1$last.TM)<15,(DIM.1$Calvingdate.2-DIM.1$last.TM),15)))

# Räkna ut sindatum 1
DIM.1$DryDate.1<-ifelse(is.na(DIM.1$last.TM),NA,
                        ifelse(DIM.1$DryDate>DIM.1$last.TM & (!is.na(DIM.1$DryDate)),DIM.1$DryDate,
                       ifelse(is.na(DIM.1$Calvingdate.2) & (!is.na(DIM.1$Out.1)),DIM.1$Out.1,
                       ifelse((DIM.1$Calvingdate.2-DIM.1$last.TM)<15,DIM.1$Calvingdate.2,DIM.1$last.TM+15))))
DIM.1$DryDate.1<-as.Date(DIM.1$DryDate.1, origin = '1970-01-01')
```

## Hitta de tre sista provmjölkningarna
```{r}
lastValue <- function(x)   tail(x[!is.na(x)], 1)
Date.1$last.TM<-apply(Date.1[c(13:34)], 1, lastValue)
Date.1$last.TM<-as.Date(as.character(Date.1$last.TM))

secondLastDate <- function(x) {
  tail(x[!is.na(x)], 2)[1]
}

Date.1$secondLast.TM<- apply(Date.1[c(13:34)], 1, secondLastDate)
Date.1$secondLast.TM<- as.Date(Date.1$secondLast.TM)

thirdLastDate <- function(x) {
  tail(x[!is.na(x)], 3)[1]
}

Date.1$thirdLast.TM <- apply(Date.1[c(13:34)], 1, thirdLastDate)
Date.1$thirdLast.TM <- as.Date(Date.1$thirdLast.TM)
```



## Ta fram TM 3 och 8 för att kunna räkna ut persistency
```{r}
PI<-kg.milk.1[c(1,4,9)]
```
write_xlsx(PI, "PI.xlsx")

## Ta fram DIM vid TM 3 and last TM
```{r}
TM.DIM<-DIM.1[c(1,2,10,14:35)]
TM.DIM$Dry.DIM<-TM.DIM$last.TM-TM.DIM$Calvingdate.1
TM.DIM$TM.DIM.1<-TM.DIM$Int.1
TM.DIM$TM.DIM.2<-TM.DIM$Int.1+TM.DIM$Int.2
TM.DIM$TM.DIM.3<-TM.DIM$Int.1+TM.DIM$Int.2+TM.DIM$Int.3
TM.DIM$TM.DIM.4<-TM.DIM$Int.1+TM.DIM$Int.2+TM.DIM$Int.3+TM.DIM$Int.4
TM.DIM$TM.DIM.5<-TM.DIM$Int.1+TM.DIM$Int.2+TM.DIM$Int.3+TM.DIM$Int.4+TM.DIM$Int.5
TM.DIM$TM.DIM.6<-TM.DIM$Int.1+TM.DIM$Int.2+TM.DIM$Int.3+TM.DIM$Int.4+TM.DIM$Int.5+TM.DIM$Int.6
TM.DIM$TM.DIM.7<-TM.DIM$TM.DIM.6+TM.DIM$Int.7
TM.DIM$TM.DIM.8<-TM.DIM$TM.DIM.7+TM.DIM$Int.8
TM.DIM$TM.DIM.9<-TM.DIM$TM.DIM.8+TM.DIM$Int.9
TM.DIM$TM.DIM.10<-TM.DIM$TM.DIM.9+TM.DIM$Int.10
TM.DIM$TM.DIM.11<-TM.DIM$TM.DIM.10+TM.DIM$Int.11
TM.DIM$TM.DIM.12<-TM.DIM$TM.DIM.11+TM.DIM$Int.12
TM.DIM$TM.DIM.13<-TM.DIM$TM.DIM.12+TM.DIM$Int.13
TM.DIM$TM.DIM.14<-TM.DIM$TM.DIM.13+TM.DIM$Int.14
TM.DIM$TM.DIM.15<-TM.DIM$TM.DIM.14+TM.DIM$Int.15
TM.DIM$TM.DIM.16<-TM.DIM$TM.DIM.15+TM.DIM$Int.16
TM.DIM$TM.DIM.17<-TM.DIM$TM.DIM.16+TM.DIM$Int.17
TM.DIM$TM.DIM.18<-TM.DIM$TM.DIM.17+TM.DIM$Int.18
TM.DIM$TM.DIM.19<-TM.DIM$TM.DIM.18+TM.DIM$Int.19
TM.DIM$TM.DIM.20<-TM.DIM$TM.DIM.19+TM.DIM$Int.20
TM.DIM$TM.DIM.21<-TM.DIM$TM.DIM.20+TM.DIM$Int.21
TM.DIM$TM.DIM.22<-TM.DIM$TM.DIM.21+TM.DIM$Int.22
```
write_xlsx(TM.DIM, "TM.DIM.xlsx")



## slå hop sista provmjölkningsdatum och sista provmjölkningsmängder
```{r}
Last.TM<-cbind(Date.1[c(1,6,37,36,35)],kg.milk.1[c(26,25,24)])
summary(Last.TM)
```

## Räkna fram dry off yield (TM 50-20 d innan sin)
om två datum används det närmast 50 d innan sin
```{r}
Dry.yield<-Last.TM
Dry.yield$Date2<-as.Date(ifelse(Dry.yield$secondLast.TM<(Dry.yield$DryDate-20)&Dry.yield$secondLast.TM>(Dry.yield$DryDate-50),Dry.yield$secondLast.TM,NA),origin = '1970-01-01')
Dry.yield$Date1<-as.Date(ifelse(Dry.yield$last.TM<(Dry.yield$DryDate-20)&Dry.yield$last.TM>(Dry.yield$DryDate-50),Dry.yield$last.TM,NA),origin = '1970-01-01')
Dry.yield$Dry.yield.date<-as.Date(ifelse(is.na(Dry.yield$Date2),Dry.yield$Date1,Dry.yield$Date2),origin = '1970-01-01')
Dry.yield$Kg2<-ifelse(Dry.yield$secondLast.TM<(Dry.yield$DryDate-20)&Dry.yield$secondLast.TM>(Dry.yield$DryDate-50),Dry.yield$KgMilk.secondLast,NA)
Dry.yield$Kg1<-ifelse(Dry.yield$last.TM<(Dry.yield$DryDate-20)&Dry.yield$last.TM>(Dry.yield$DryDate-50),Dry.yield$KgMilk.last,NA)
Dry.yield$Dry.yield<-ifelse(is.na(Dry.yield$Kg2),Dry.yield$Kg1,Dry.yield$Kg2)
```


```{r}
q<-Dry.yield[c(1,14)]
write_xlsx(Dry.yield, "Dry.yield.xlsx")
```

### Räkna ut DIM vid respektive provmjölkning för att få ut laktationskurvor

### Göra ett nytt intervalldataset för bara intervall lakt 1

```{r}
DIM$Int.1<-ifelse(is.na(Date$TMDate.1),NA,(Date$TMDate.1 - Date$Calvingdate.1))
INT.1<-DIM
INT.1$Int.2<-as.numeric(Date.1$TMDate.2-Date.1$TMDate.1)
INT.1$Int.3<-as.numeric(Date.1$TMDate.3-Date.1$TMDate.2)
INT.1$Int.4<-as.numeric(Date.1$TMDate.4-Date.1$TMDate.3)
INT.1$Int.5<-as.numeric(Date.1$TMDate.5-Date.1$TMDate.4)
INT.1$Int.6<-as.numeric(Date.1$TMDate.6-Date.1$TMDate.5)
INT.1$Int.7<-as.numeric(Date.1$TMDate.7-Date.1$TMDate.6)
INT.1$Int.8<-as.numeric(Date.1$TMDate.8-Date.1$TMDate.7)
INT.1$Int.9<-as.numeric(Date.1$TMDate.9-Date.1$TMDate.8)
INT.1$Int.10<-as.numeric(Date.1$TMDate.10-Date.1$TMDate.9)
INT.1$Int.11<-as.numeric(Date.1$TMDate.11-Date.1$TMDate.10)
INT.1$Int.12<-as.numeric(Date.1$TMDate.12-Date.1$TMDate.11)
INT.1$Int.13<-as.numeric(Date.1$TMDate.13-Date.1$TMDate.12)
INT.1$Int.14<-as.numeric(Date.1$TMDate.14-Date.1$TMDate.13)
INT.1$Int.15<-as.numeric(Date.1$TMDate.15-Date.1$TMDate.14)
INT.1$Int.16<-as.numeric(Date.1$TMDate.16-Date.1$TMDate.15)
INT.1$Int.17<-as.numeric(Date.1$TMDate.17-Date.1$TMDate.16)
INT.1$Int.18<-as.numeric(Date.1$TMDate.18-Date.1$TMDate.17)
INT.1$Int.19<-as.numeric(Date.1$TMDate.19-Date.1$TMDate.18)
INT.1$Int.20<-as.numeric(Date.1$TMDate.20-Date.1$TMDate.19)
INT.1$Int.21<-as.numeric(Date.1$TMDate.21-Date.1$TMDate.20)
INT.1$Int.22<-as.numeric(Date.1$TMDate.22-Date.1$TMDate.21)

# Räkna ut sista intervallet
INT.1$Last.Int<-ifelse(INT.1$DryDate>INT.1$last.TM & (!is.na(INT.1$DryDate)),(INT.1$DryDate-INT.1$last.TM),
                       ifelse(is.na(INT.1$Calvingdate.2) & (!is.na(INT.1$Out.1)),(INT.1$Out.1-INT.1$last.TM),
                       ifelse((INT.1$Calvingdate.2-INT.1$last.TM)<15,(INT.1$Calvingdate.2-INT.1$last.TM),15)))

# Räkna ut sindatum 1
INT.1$DryDate.1<-ifelse(is.na(INT.1$last.TM),NA,
                        ifelse(INT.1$DryDate>INT.1$last.TM & (!is.na(INT.1$DryDate)),INT.1$DryDate,
                       ifelse(is.na(INT.1$Calvingdate.2) & (!is.na(INT.1$Out.1)),INT.1$Out.1,
                       ifelse((INT.1$Calvingdate.2-INT.1$last.TM)<15,INT.1$Calvingdate.2,INT.1$last.TM+15))))

INT.1$DryDate.1<-as.Date(INT.1$DryDate.1, origin = '1970-01-01')
```

## Calculating lactation yield according to Sargent, 1968 and ICAR

```{r}
MY<-INT.1[c(1:4,14:35)]
MY[c(14:35)]<-NA
MY$MY.1<-NA
MY<-MY[c(1:4)]

MY$MY.1<-INT.1$Int.1*kg.milk.1$KgMilk.1
MY$MY.2<-INT.1$Int.2*((kg.milk.1$KgMilk.1+kg.milk.1$KgMilk.2)/2)
MY$MY.3<-INT.1$Int.3*((kg.milk.1$KgMilk.2+kg.milk.1$KgMilk.3)/2)
MY$MY.4<-INT.1$Int.4*((kg.milk.1$KgMilk.3+kg.milk.1$KgMilk.4)/2)
MY$MY.5<-INT.1$Int.5*((kg.milk.1$KgMilk.4+kg.milk.1$KgMilk.5)/2)
MY$MY.6<-INT.1$Int.6*((kg.milk.1$KgMilk.5+kg.milk.1$KgMilk.6)/2)
MY$MY.7<-INT.1$Int.7*((kg.milk.1$KgMilk.6+kg.milk.1$KgMilk.7)/2)
MY$MY.8<-INT.1$Int.8*((kg.milk.1$KgMilk.7+kg.milk.1$KgMilk.8)/2)
MY$MY.9<-INT.1$Int.9*((kg.milk.1$KgMilk.8+kg.milk.1$KgMilk.9)/2)
MY$MY.10<-INT.1$Int.10*((kg.milk.1$KgMilk.9+kg.milk.1$KgMilk.10)/2)
MY$MY.11<-INT.1$Int.11*((kg.milk.1$KgMilk.10+kg.milk.1$KgMilk.11)/2)
MY$MY.12<-INT.1$Int.12*((kg.milk.1$KgMilk.11+kg.milk.1$KgMilk.12)/2)
MY$MY.13<-INT.1$Int.13*((kg.milk.1$KgMilk.12+kg.milk.1$KgMilk.13)/2)
MY$MY.14<-INT.1$Int.14*((kg.milk.1$KgMilk.13+kg.milk.1$KgMilk.14)/2)
MY$MY.15<-INT.1$Int.15*((kg.milk.1$KgMilk.14+kg.milk.1$KgMilk.15)/2)
MY$MY.16<-INT.1$Int.16*((kg.milk.1$KgMilk.15+kg.milk.1$KgMilk.16)/2)
MY$MY.17<-INT.1$Int.17*((kg.milk.1$KgMilk.16+kg.milk.1$KgMilk.17)/2)
MY$MY.18<-INT.1$Int.18*((kg.milk.1$KgMilk.17+kg.milk.1$KgMilk.18)/2)
MY$MY.19<-INT.1$Int.19*((kg.milk.1$KgMilk.18+kg.milk.1$KgMilk.19)/2)
MY$MY.20<-INT.1$Int.20*((kg.milk.1$KgMilk.19+kg.milk.1$KgMilk.20)/2)
MY$MY.21<-INT.1$Int.21*((kg.milk.1$KgMilk.20+kg.milk.1$KgMilk.21)/2)
MY$MY.22<-INT.1$Int.22*((kg.milk.1$KgMilk.21+kg.milk.1$KgMilk.22)/2)
MY$MY.last<-INT.1$Last.Int*kg.milk.1$KgMilk.last

MY$LY.1<-rowSums(MY[c(5:27)],na.rm=TRUE)
MY$LY.1<-ifelse(MY$LY.1==0.00,NA,MY$LY.1)

MY$CInt.1<-as.numeric(MY$Calvingdate.2-MY$Calvingdate.1)
MY$CInt.2<-as.numeric(MY$Calvingdate.3-MY$Calvingdate.2)
MY$MY.day.1<-MY$LY.1/MY$CInt.1
```


### Calculating lactation ECM yield according to Sargent, 1968 and ICAR

```{r}
ECMY<-INT.1[c(1:4)]

ECMY$ECMY.1<-0
ECMY$ECMY.2<-0
ECMY$ECMY.3<-0
ECMY$ECMY.4<-0
ECMY$ECMY.5<-0
ECMY$ECMY.6<-0
ECMY$ECMY.7<-0
ECMY$ECMY.8<-0
ECMY$ECMY.9<-0
ECMY$ECMY.10<-0
ECMY$ECMY.11<-0
ECMY$ECMY.12<-0
ECMY$ECMY.13<-0
ECMY$ECMY.14<-0
ECMY$ECMY.15<-0
ECMY$ECMY.16<-0
ECMY$ECMY.17<-0
ECMY$ECMY.18<-0
ECMY$ECMY.19<-0
ECMY$ECMY.20<-0
ECMY$ECMY.21<-0
ECMY$ECMY.22<-0
ECMY$ECMY.last<-0


ECMY$ECMY.1<-INT.1$Int.1*ECM.1$Kg.ECM.1
ECMY$ECMY.2<-INT.1$Int.2*((ECM.1$Kg.ECM.1+ECM.1$Kg.ECM.2)/2)
ECMY$ECMY.3<-INT.1$Int.3*((ECM.1$Kg.ECM.2+ECM.1$Kg.ECM.3)/2)
ECMY$ECMY.4<-INT.1$Int.4*((ECM.1$Kg.ECM.3+ECM.1$Kg.ECM.4)/2)
ECMY$ECMY.5<-INT.1$Int.5*((ECM.1$Kg.ECM.4+ECM.1$Kg.ECM.5)/2)
ECMY$ECMY.6<-INT.1$Int.6*((ECM.1$Kg.ECM.5+ECM.1$Kg.ECM.6)/2)
ECMY$ECMY.7<-INT.1$Int.7*((ECM.1$Kg.ECM.6+ECM.1$Kg.ECM.7)/2)
ECMY$ECMY.8<-INT.1$Int.8*((ECM.1$Kg.ECM.7+ECM.1$Kg.ECM.8)/2)
ECMY$ECMY.9<-INT.1$Int.9*((ECM.1$Kg.ECM.8+ECM.1$Kg.ECM.9)/2)
ECMY$ECMY.10<-INT.1$Int.10*((ECM.1$Kg.ECM.9+ECM.1$Kg.ECM.10)/2)
ECMY$ECMY.11<-INT.1$Int.11*((ECM.1$Kg.ECM.10+ECM.1$Kg.ECM.11)/2)
ECMY$ECMY.12<-INT.1$Int.12*((ECM.1$Kg.ECM.11+ECM.1$Kg.ECM.12)/2)
ECMY$ECMY.13<-INT.1$Int.13*((ECM.1$Kg.ECM.12+ECM.1$Kg.ECM.13)/2)
ECMY$ECMY.14<-INT.1$Int.14*((ECM.1$Kg.ECM.13+ECM.1$Kg.ECM.14)/2)
ECMY$ECMY.15<-INT.1$Int.15*((ECM.1$Kg.ECM.14+ECM.1$Kg.ECM.15)/2)
ECMY$ECMY.16<-INT.1$Int.16*((ECM.1$Kg.ECM.15+ECM.1$Kg.ECM.16)/2)
ECMY$ECMY.17<-INT.1$Int.17*((ECM.1$Kg.ECM.16+ECM.1$Kg.ECM.17)/2)
ECMY$ECMY.18<-INT.1$Int.18*((ECM.1$Kg.ECM.17+ECM.1$Kg.ECM.18)/2)
ECMY$ECMY.19<-INT.1$Int.19*((ECM.1$Kg.ECM.18+ECM.1$Kg.ECM.19)/2)
ECMY$ECMY.20<-INT.1$Int.20*((ECM.1$Kg.ECM.19+ECM.1$Kg.ECM.20)/2)
ECMY$ECMY.21<-INT.1$Int.21*((ECM.1$Kg.ECM.20+ECM.1$Kg.ECM.21)/2)
ECMY$ECMY.22<-INT.1$Int.22*((ECM.1$Kg.ECM.21+ECM.1$Kg.ECM.22)/2)
ECMY$ECMY.last<-INT.1$Last.Int*ECM.1$Kg.ECM.last

ECMY$ECM.LY.1<-rowSums(ECMY[c(5:27)],na.rm=TRUE)
ECMY$ECM.LY.1<-ifelse(ECMY$ECM.LY.1==0.00,NA,ECMY$ECM.LY.1)

ECMY$CInt.1<-as.numeric(MY$Calvingdate.2-MY$Calvingdate.1)
ECMY$CInt.2<-as.numeric(MY$Calvingdate.3-MY$Calvingdate.2)
ECMY$ECMY.day.1<-ECMY$ECM.LY.1/ECMY$CInt.1
```

## Subsetting the essential variables from MY and ECM yield
```{r}
LY<-cbind((MY[c(1,28:31)]),(ECMY[28:31]))
LY<-LY[c(1,3,4,2,5,6,9)]
```


# Merga inkluderade djur + harst + IngUtg + laktavk + Sindat + Provmj

```{r,echo =FALSE, include=FALSE}
mk3hilnp<-left_join(mk3hiln, LY, by = "CowID", copy = FALSE, suffix = c("", ".1"), keep = FALSE, na_matches = "na")
```

# merga semin

### Basic merge och filtrering
  1. filtrera fram endast semin (besätningsnummer använd tjur >0)
  2. ta fram intressanta kolumner
```{r,echo =FALSE, include=FALSE}
s1<-read_excel("data/Semin_del_2_-_2022-08-02.xlsx", col_types = c("text", "numeric", "text", "numeric", "numeric", "numeric", "numeric", "numeric", "numeric", "numeric", "numeric", "numeric", "date", "numeric", "numeric", "numeric", "numeric", "numeric", "numeric", "numeric", "numeric", "text", "numeric", "numeric", "numeric", "numeric", "numeric", "numeric", "numeric", "numeric","numeric","text"))
s2<-read_excel("data/Semin_del_2_-_2023-01-02.xlsx", col_types = c("text", "numeric", "text", "numeric", "numeric", "numeric", "numeric", "numeric", "numeric", "numeric", "numeric", "numeric", "date", "numeric", "numeric", "numeric", "numeric", "numeric", "numeric", "numeric", "numeric", "text", "numeric", "numeric", "numeric", "numeric", "numeric", "numeric", "numeric", "numeric","numeric","text"))
st<-rbind(s1,s2)
ust<-unique(st) # remove duplicates
fust<-filter(ust, Gård %in% c("B","D","E","F","H","I","J","K","L","M","Q","R","T","U","V","X","Y","Z"))
dfust<-filter(fust, Händelsedatum > '2020-09-30')
sdfust<-filter(dfust, dfust[c(18)] > 0)
sm<-sdfust[c(1,2,13,15,16,21)]

sm<-setnames(sm, old = c('KoID','seminnr','Händelsedatum','Brunstkod','Dräktighetsstatus','Händelsetyp'), 
         new = c('CowID','AInr','AIdate','EI','Preg','Event'))
sm<-unique(sm)

# Om aktuellt (byt namn, se nedan: write_xlsx(sm, "Semin_ny.xlsx")
```

### lagt till nya seminnummer i excelfilen "manuellt" med torstens excelformel efter filtreringen för att det ska stämma och bli vänsterjusterat rätt.
```{r}
sm<-read_excel("data/Semin_ny.xlsx", col_types = c("text", "numeric", "date", "numeric", "numeric", "numeric"))
```

### Merga inkluderade djur +semin och räkna ut intressanta variabler + slagit ihop data frames + bytt namn på rubriker för att kunna sortera
  1. bara för kor i försök
  2. ta fram semin endast lakt 1
  3. Räkna semin
  4. intervall kalv - första semin
  5. Räkna ut dräktighetsgivande ins
  6. ta fram rätt djur, byta namn på rubriker
```{r,echo =FALSE, include=FALSE}
AI1<-filter(sm, AInr == 1)
AI2<-filter(sm, AInr == 2)
AI3<-filter(sm, AInr == 3)
AI4<-filter(sm, AInr == 4)
AI5<-filter(sm, AInr == 5)
AI6<-filter(sm, AInr == 6)
AI7<-filter(sm, AInr == 7)
AI8<-filter(sm, AInr == 8)
AI9<-filter(sm, AInr == 9)
AI10<-filter(sm, AInr == 10)
AI11<-filter(sm, AInr == 11)
AI12<-filter(sm, AInr == 12)

list_df = list(AI1,AI2,AI3,AI4,AI5,AI6,AI7,AI8,AI9,AI10,AI11,AI12)
mstest <- list_df %>% reduce(full_join, by='CowID')
headings11 <- colnames(mstest)

msny<-setnames(mstest, old = c(headings11), 
         new = c('CowID','AInr.1',	'AIdate.1',	'EI.1',	'Preg.1',	'Event.1',	'AInr.2',	'AIdate.2',	'EI.2',	'Preg.2',	'Event.2',	'AInr.3',	'AIdate.3',	'EI.3',	'Preg.3',	'Event.3',	'AInr.4',	'AIdate.4',	'EI.4',	'Preg.4',	'Event.4',	'AInr.5',	'AIdate.5',	'EI.5',	'Preg.5',	'Event.5',	'AInr.6',	'AIdate.6',	'EI.6',	'Preg.6',	'Event.6',	'AInr.7',	'AIdate.7',	'EI.7',	'Preg.7',	'Event.7',	'AInr.8',	'AIdate.8',	'EI.8',	'Preg.8',	'Event.8',	'AInr.9',	'AIdate.9',	'EI.9',	'Preg.9',	'Event.9',	'AInr.10',	'AIdate.10',	'EI.10',	'Preg.10',	'Event.10',	'AInr.11',	'AIdate.11',	'EI.11',	'Preg.11',	'Event.11',	'AInr.12',	'AIdate.12',	'EI.12',	'Preg.12',	'Event.12'))
msy<-msny[,sort(colnames(msny))]
msy<-unique(msy)
```


### AI datum - filtrera fram lakt 1!
1.  Ta fram datum endast för laktation 1!
2.  göra om till rätt sorts datum
3.  Räkna fram sista semin lakt 1
```{r, echo =FALSE, include=FALSE}
msemd<-left_join(k.date, msy, by = "CowID", copy = FALSE, suffix = c("", ".1"), keep = FALSE, na_matches = "na")
AIdate<-msemd[c(1:19)]
AIdate<-AIdate[,c(1:8,12,13:19,9:11)]

AIdate$AIdate.1[AIdate$AIdate.1>AIdate$Calvingdate.2]<-NA
AIdate$AIdate.2[AIdate$AIdate.2>AIdate$Calvingdate.2]<-NA
AIdate$AIdate.3[AIdate$AIdate.3>AIdate$Calvingdate.2]<-NA
AIdate$AIdate.4[AIdate$AIdate.4>AIdate$Calvingdate.2]<-NA
AIdate$AIdate.5[AIdate$AIdate.5>AIdate$Calvingdate.2]<-NA
AIdate$AIdate.6[AIdate$AIdate.6>AIdate$Calvingdate.2]<-NA
AIdate$AIdate.7[AIdate$AIdate.7>AIdate$Calvingdate.2]<-NA
AIdate$AIdate.8[AIdate$AIdate.8>AIdate$Calvingdate.2]<-NA
AIdate$AIdate.9[AIdate$AIdate.9>AIdate$Calvingdate.2]<-NA
AIdate$AIdate.10[AIdate$AIdate.10>AIdate$Calvingdate.2]<-NA
AIdate$AIdate.11[AIdate$AIdate.11>AIdate$Calvingdate.2]<-NA
AIdate$AIdate.12[AIdate$AIdate.12>AIdate$Calvingdate.2]<-NA

AIdate$AIdate.1<-as.Date(as.character(as.POSIXct(AIdate$AIdate.1)))
AIdate$AIdate.2<-as.Date(as.character(as.POSIXct(AIdate$AIdate.2)))
AIdate$AIdate.3<-as.Date(as.character(as.POSIXct(AIdate$AIdate.3)))
AIdate$AIdate.4<-as.Date(as.character(as.POSIXct(AIdate$AIdate.4)))
AIdate$AIdate.5<-as.Date(as.character(as.POSIXct(AIdate$AIdate.5)))
AIdate$AIdate.6<-as.Date(as.character(as.POSIXct(AIdate$AIdate.6)))
AIdate$AIdate.7<-as.Date(as.character(as.POSIXct(AIdate$AIdate.7)))
AIdate$AIdate.8<-as.Date(as.character(as.POSIXct(AIdate$AIdate.8)))
AIdate$AIdate.9<-as.Date(as.character(as.POSIXct(AIdate$AIdate.9)))
AIdate$AIdate.10<-as.Date(as.character(as.POSIXct(AIdate$AIdate.10)))
AIdate$AIdate.11<-as.Date(as.character(as.POSIXct(AIdate$AIdate.11)))
AIdate$AIdate.12<-as.Date(as.character(as.POSIXct(AIdate$AIdate.12)))

AIdate$Calvingdate.1<-as.Date(as.character(as.POSIXct(AIdate$Calvingdate.1)))
AIdate$Calvingdate.2<-as.Date(as.character(as.POSIXct(AIdate$Calvingdate.2)))
AIdate$Calvingdate.3<-as.Date(as.character(as.POSIXct(AIdate$Calvingdate.3)))
AIdate$DryDate<-as.Date(as.character(as.POSIXct(AIdate$DryDate)))
AIdate$DryDate.2<-as.Date(as.character(as.POSIXct(AIdate$DryDate.2)))

# Räkna ut sista semin och göra om till datumformat
lastValue <- function(x)   tail(x[!is.na(x)], 1)
AIdate$last.AI<-apply(AIdate[c(8:19)], 1, lastValue)
AIdate$last.AI<-as.Date(as.character(AIdate$last.AI))


AIdate.1<-AIdate[-c(2:7)]
```

## Semin Filtrerat fram rätt kor, relevanta rader 
```{r, echo =FALSE, include=FALSE}
msem<-left_join(LY[c(1:3)], msy, by = "CowID", copy = FALSE, suffix = c("", ".1"), keep = FALSE, na_matches = "na")
msem<-msem[-c(2,3)]# ta bort kalvningsdatum - behövs inte

AInr<-msem[c(1,14:25)]
AInr<-AInr[,c(1,2,6,7:13,3:5)]

EI<-msem[c(1,26:37)]
EI<-EI[,c(1,2,6,7:13,3:5)]

Event<-msem[c(1,38:49)]
Event<-Event[,c(1,2,6,7:13,3:5)]
```

### Se till att det endast är EI från lakt 1 med
```{r}
EI.1<-EI
EI.1$EI.1<-ifelse(is.na(AIdate$AIdate.1),NA,EI$EI.1)
EI.1$EI.2<-ifelse(is.na(AIdate$AIdate.2),NA,EI$EI.2)
EI.1$EI.3<-ifelse(is.na(AIdate$AIdate.3),NA,EI$EI.3)
EI.1$EI.4<-ifelse(is.na(AIdate$AIdate.4),NA,EI$EI.4)
EI.1$EI.5<-ifelse(is.na(AIdate$AIdate.5),NA,EI$EI.5)
EI.1$EI.6<-ifelse(is.na(AIdate$AIdate.6),NA,EI$EI.6)
EI.1$EI.7<-ifelse(is.na(AIdate$AIdate.7),NA,EI$EI.7)
EI.1$EI.8<-ifelse(is.na(AIdate$AIdate.8),NA,EI$EI.8)
EI.1$EI.9<-ifelse(is.na(AIdate$AIdate.9),NA,EI$EI.9)
EI.1$EI.10<-ifelse(is.na(AIdate$AIdate.10),NA,EI$EI.10)
EI.1$EI.11<-ifelse(is.na(AIdate$AIdate.11),NA,EI$EI.11)
EI.1$EI.12<-ifelse(is.na(AIdate$AIdate.12),NA,EI$EI.12)

EI.1<- EI.1 [c(1:13)]
```

### NINS lakt 1 - Se till att det endast är Event (semin) från lakt 1 med
```{r}
Event.1<-Event
Event.1$Event.1<-ifelse(is.na(AIdate$AIdate.1),NA,Event$Event.1)
Event.1$Event.2<-ifelse(is.na(AIdate$AIdate.2),NA,Event$Event.2)
Event.1$Event.3<-ifelse(is.na(AIdate$AIdate.3),NA,Event$Event.3)
Event.1$Event.4<-ifelse(is.na(AIdate$AIdate.4),NA,Event$Event.4)
Event.1$Event.5<-ifelse(is.na(AIdate$AIdate.5),NA,Event$Event.5)
Event.1$Event.6<-ifelse(is.na(AIdate$AIdate.6),NA,Event$Event.6)
Event.1$Event.7<-ifelse(is.na(AIdate$AIdate.7),NA,Event$Event.7)
Event.1$Event.8<-ifelse(is.na(AIdate$AIdate.8),NA,Event$Event.8)
Event.1$Event.9<-ifelse(is.na(AIdate$AIdate.9),NA,Event$Event.9)
Event.1$Event.10<-ifelse(is.na(AIdate$AIdate.10),NA,Event$Event.10)
Event.1$Event.11<-ifelse(is.na(AIdate$AIdate.11),NA,Event$Event.11)
Event.1$Event.12<-ifelse(is.na(AIdate$AIdate.12),NA,Event$Event.12)

Event.1<- Event.1 [c(1:13)]

Event.1$n.AI<-rowSums(Event.1[c(2:13)],na.rm=TRUE)
```

## Dräktighetsdiagnoser


  
  
### Basic merge och filtrering
  1. filtrera fram endast semin (besätningsnummer använd tjur >0)
  2. ta fram intressanta kolumner
```{r,echo =FALSE, include=FALSE}
s1<-read_excel("data/Semin_del_2_-_2022-08-02.xlsx", col_types = c("text", "numeric", "text", "numeric", "numeric", "numeric", "numeric", "numeric", "numeric", "numeric", "numeric", "numeric", "date", "numeric", "numeric", "numeric", "numeric", "numeric", "numeric", "numeric", "numeric", "text", "numeric", "numeric", "numeric", "numeric", "numeric", "numeric", "numeric", "numeric","numeric","text"))
s2<-read_excel("data/Semin_del_2_-_2023-01-02.xlsx", col_types = c("text", "numeric", "text", "numeric", "numeric", "numeric", "numeric", "numeric", "numeric", "numeric", "numeric", "numeric", "date", "numeric", "numeric", "numeric", "numeric", "numeric", "numeric", "numeric", "numeric", "text", "numeric", "numeric", "numeric", "numeric", "numeric", "numeric", "numeric", "numeric","numeric","text"))
st<-rbind(s1,s2)
ust<-unique(st) # remove duplicates
fust<-filter(ust, Gård %in% c("B","D","E","F","H","I","J","K","L","M","Q","R","T","U","V","X","Y","Z"))
dfust<-filter(fust, Händelsedatum > '2020-09-30')
drfust<-filter(dfust, dfust[c(16)] > 0)
dr<-drfust[c(1,2,13,15,16,21)]

dr<-setnames(dr, old = c('KoID','seminnr','Händelsedatum','Brunstkod','Dräktighetsstatus','Händelsetyp'), 
         new = c('CowID','AInr','AIdate','EI','Preg','Event'))
dr<-unique(dr)

# om behöver läsas in igen obs isf ändra namn..: write_xlsx(dr, "Preg_ny.xlsx")
```

### gett dessa nya dräktighetsdiagnosnummer så det stämmer med vänsterjustering
```{r,echo =FALSE, include=FALSE}
dr<-read_excel("data/Preg_ny.rev.xlsx", col_types = c("text", "numeric", "date", "numeric", "numeric", "numeric"))
```

### Merga inkluderade djur +semin och räkna ut intressanta variabler + slagit ihop data frames + bytt namn på rubriker för att kunna sortera
  1. bara för kor i försök
  2. ta fram semin endast lakt 1
  3. Räkna semin
  4. intervall kalv - första semin
  5. Räkna ut dräktighetsgivande ins
  6. ta fram rätt djur, byta namn på rubriker
```{r, echo =FALSE, include=FALSE}
PrD1<-filter(dr, AInr == 1)
PrD2<-filter(dr, AInr == 2)
PrD3<-filter(dr, AInr == 3)
PrD4<-filter(dr, AInr == 4)
PrD5<-filter(dr, AInr == 5)
PrD6<-filter(dr, AInr == 6)
PrD7<-filter(dr, AInr == 7)
PrD8<-filter(dr, AInr == 8)
PrD9<-filter(dr, AInr == 9)
PrD10<-filter(dr, AInr == 10)
PrD11<-filter(dr, AInr == 11)
PrD12<-filter(dr, AInr == 12)

list_df = list(PrD1,PrD2,PrD3,PrD4,PrD5,PrD6,PrD7,PrD8,PrD9,PrD10,PrD11,PrD12)
drtest <- list_df %>% reduce(full_join, by='CowID')
headings12 <- colnames(drtest)

drny<-setnames(drtest, old = c(headings12), 
         new = c('CowID','AInr.1',	'PrDate.1',	'EI.1',	'Preg.1',	'Event.1',	'AInr.2',	'PrDate.2',	'EI.2',	'Preg.2',	'Event.2',	'AInr.3',	'PrDate.3',	'EI.3',	'Preg.3',	'Event.3',	'AInr.4',	'PrDate.4',	'EI.4',	'Preg.4',	'Event.4',	'AInr.5',	'PrDate.5',	'EI.5',	'Preg.5',	'Event.5',	'AInr.6',	'PrDate.6',	'EI.6',	'Preg.6',	'Event.6',	'AInr.7',	'PrDate.7',	'EI.7',	'Preg.7',	'Event.7',	'AInr.8',	'PrDate.8',	'EI.8',	'Preg.8',	'Event.8',	'AInr.9',	'PrDate.9',	'EI.9',	'Preg.9',	'Event.9',	'AInr.10',	'PrDate.10',	'EI.10',	'Preg.10',	'Event.10',	'AInr.11',	'PrDate.11',	'EI.11',	'Preg.11',	'Event.11',	'AInr.12',	'PrDate.12',	'EI.12',	'Preg.12',	'Event.12'))

dry<-drny[,sort(colnames(drny))]
dry<-unique(dry)
```

### Dräktighetsdiagnos datum - filtrera fram lakt 1!
1.  Ta fram datum endast för laktation 1!
2.  göra om till rätt sorts datum
3.  Räkna fram sista semin lakt 1
```{r, echo =FALSE, include=FALSE}
dremd<-left_join(k.date, dry, by = "CowID", copy = FALSE, suffix = c("", ".1"), keep = FALSE, na_matches = "na")
PrDate<-dremd[c(1:7,44:55)]
PrDate<-PrDate[,c(1:8,12,13:19,9:11)]

PrDate$PrDate.1[PrDate$PrDate.1>PrDate$Calvingdate.2|PrDate$PrDate.1<PrDate$Calvingdate.1]<-NA
PrDate$PrDate.2[PrDate$PrDate.2>PrDate$Calvingdate.2|PrDate$PrDate.2<PrDate$Calvingdate.1]<-NA
PrDate$PrDate.3[PrDate$PrDate.3>PrDate$Calvingdate.2|PrDate$PrDate.3<PrDate$Calvingdate.1]<-NA
PrDate$PrDate.4[PrDate$PrDate.4>PrDate$Calvingdate.2|PrDate$PrDate.4<PrDate$Calvingdate.1]<-NA
PrDate$PrDate.5[PrDate$PrDate.5>PrDate$Calvingdate.2|PrDate$PrDate.5<PrDate$Calvingdate.1]<-NA
PrDate$PrDate.6[PrDate$PrDate.6>PrDate$Calvingdate.2|PrDate$PrDate.6<PrDate$Calvingdate.1]<-NA
PrDate$PrDate.7[PrDate$PrDate.7>PrDate$Calvingdate.2|PrDate$PrDate.7<PrDate$Calvingdate.1]<-NA
PrDate$PrDate.8[PrDate$PrDate.8>PrDate$Calvingdate.2|PrDate$PrDate.8<PrDate$Calvingdate.1]<-NA
PrDate$PrDate.9[PrDate$PrDate.9>PrDate$Calvingdate.2|PrDate$PrDate.9<PrDate$Calvingdate.1]<-NA
PrDate$PrDate.10[PrDate$PrDate.10>PrDate$Calvingdate.2|PrDate$PrDate.10<PrDate$Calvingdate.1]<-NA
PrDate$PrDate.11[PrDate$PrDate.11>PrDate$Calvingdate.2|PrDate$PrDate.11<PrDate$Calvingdate.1]<-NA
PrDate$PrDate.12[PrDate$PrDate.12>PrDate$Calvingdate.2|PrDate$PrDate.12<PrDate$Calvingdate.1]<-NA

PrDate$PrDate.1<-as.Date(as.character(as.POSIXct(PrDate$PrDate.1)))
PrDate$PrDate.2<-as.Date(as.character(as.POSIXct(PrDate$PrDate.2)))
PrDate$PrDate.3<-as.Date(as.character(as.POSIXct(PrDate$PrDate.3)))
PrDate$PrDate.4<-as.Date(as.character(as.POSIXct(PrDate$PrDate.4)))
PrDate$PrDate.5<-as.Date(as.character(as.POSIXct(PrDate$PrDate.5)))
PrDate$PrDate.6<-as.Date(as.character(as.POSIXct(PrDate$PrDate.6)))
PrDate$PrDate.7<-as.Date(as.character(as.POSIXct(PrDate$PrDate.7)))
PrDate$PrDate.8<-as.Date(as.character(as.POSIXct(PrDate$PrDate.8)))
PrDate$PrDate.9<-as.Date(as.character(as.POSIXct(PrDate$PrDate.9)))
PrDate$PrDate.10<-as.Date(as.character(as.POSIXct(PrDate$PrDate.10)))
PrDate$PrDate.11<-as.Date(as.character(as.POSIXct(PrDate$PrDate.11)))
PrDate$PrDate.12<-as.Date(as.character(as.POSIXct(PrDate$PrDate.12)))

PrDate$Calvingdate.1<-as.Date(as.character(as.POSIXct(PrDate$Calvingdate.1)))
PrDate$Calvingdate.2<-as.Date(as.character(as.POSIXct(PrDate$Calvingdate.2)))
PrDate$Calvingdate.3<-as.Date(as.character(as.POSIXct(PrDate$Calvingdate.3)))
PrDate$DryDate<-as.Date(as.character(as.POSIXct(PrDate$DryDate)))
PrDate$DryDate.2<-as.Date(as.character(as.POSIXct(PrDate$DryDate.2)))

# Räkna ut sista dräktighetsdiagnos och göra om till datumformat
lastValue <- function(x)   tail(x[!is.na(x)], 1)
PrDate$last.AI<-apply(PrDate[c(8:19)], 1, lastValue)
PrDate$last.AI<-as.Date(as.character(PrDate$last.AI))
PrDate.1<-PrDate[-c(2:7)]
```

Verkar stämma!


### Ta fram  dräktighetsdiagnoser lakt 1 - separat dataset.
  1. Vill få fram dräktighetgivande ins
  2. pregloss eligt def i manus 2
  3. kolla upp mer parametrar i manus 2
  4. Services/conception per ko och per grupp?

dremd<-left_join(LY[c(1:3)], dry, by = "CowID", copy = FALSE, suffix = c("", ".1"), keep = FALSE, na_matches = "na")
dremd<-dremd[-c(2,3)]# ta bort kalvningsdatum - behövs inte
```{r, echo =FALSE, include=FALSE}
Prnr<-dremd[c(1,8:19)]
Prnr<-Prnr[,c(1,2,6:13,3:5)]

PrDiagn<-dremd[c(1,56:67)]
PrDiagn<-PrDiagn[,c(1,2,6:13,3:5)]
```

### Se till att det endast är dräktighetsdiagnoser från lakt 1 med

  1 Ej Dräktig (undersökt) eDr
  2 Dräktig (undersökt) Dr
  3 Dräktig ? (undersökt) Dr?
  21 Ej Dräktig (ej undersökt) eDr
  22 Dräktig (ej undersökt) Dr
  31 Ej dräktig (tjurbetäckt) eDr
  32 Dräktig (tjurbetäckt) Dr
  33 Dräktig ? (tjurbetäckt) Dr?
  41 Ej Dräktig, (sem/bet annan bes) eDr
  42 Dräktig, (sem/bet annan bes) Dr
  43 Dräktig? (sem/bet annan bes) Dr?
  51 Ej dräktig Analys eDr A
  52 Dräktig Analys Dr A
  53 Dräktig ? Analys Dr? A
```{r}
PrDiagn.1<-PrDiagn
PrDiagn.1$Preg.1<-ifelse(is.na(PrDate$PrDate.1),NA,PrDiagn$Preg.1)
PrDiagn.1$Preg.2<-ifelse(is.na(PrDate$PrDate.2),NA,PrDiagn$Preg.2)
PrDiagn.1$Preg.3<-ifelse(is.na(PrDate$PrDate.3),NA,PrDiagn$Preg.3)
PrDiagn.1$Preg.4<-ifelse(is.na(PrDate$PrDate.4),NA,PrDiagn$Preg.4)
PrDiagn.1$Preg.5<-ifelse(is.na(PrDate$PrDate.5),NA,PrDiagn$Preg.5)
PrDiagn.1$Preg.6<-ifelse(is.na(PrDate$PrDate.6),NA,PrDiagn$Preg.6)
PrDiagn.1$Preg.7<-ifelse(is.na(PrDate$PrDate.7),NA,PrDiagn$Preg.7)
PrDiagn.1$Preg.8<-ifelse(is.na(PrDate$PrDate.8),NA,PrDiagn$Preg.8)
PrDiagn.1$Preg.9<-ifelse(is.na(PrDate$PrDate.9),NA,PrDiagn$Preg.9)
PrDiagn.1$Preg.10<-ifelse(is.na(PrDate$PrDate.10),NA,PrDiagn$Preg.10)
PrDiagn.1$Preg.11<-ifelse(is.na(PrDate$PrDate.11),NA,PrDiagn$Preg.11)
PrDiagn.1$Preg.12<-ifelse(is.na(PrDate$PrDate.12),NA,PrDiagn$Preg.12)

PrDiagn.1<- PrDiagn.1[c(1:13)]
PrDiagn.2<-PrDiagn.1
```

### koda om diagnos-kod till Dräktig eller ej dräktig
  1. Alla som slutar på 1: 1, 21, 31, 41, 51 = ej dräktig
  2. Alla som slutar på 2: 2, 22, 32, 42, 52 = dräktig
  3. Alla som slutar på 3: osäkra - tas inte med..
```{r}
PrDiagn.1$Preg.1[PrDiagn.1$Preg.1 == 1] <- "NotPreg"
PrDiagn.1$Preg.2[PrDiagn.1$Preg.2 == 1] <- "NotPreg"
PrDiagn.1$Preg.3[PrDiagn.1$Preg.3 == 1] <- "NotPreg"
PrDiagn.1$Preg.4[PrDiagn.1$Preg.4 == 1] <- "NotPreg"
PrDiagn.1$Preg.5[PrDiagn.1$Preg.5 == 1] <- "NotPreg"
PrDiagn.1$Preg.6[PrDiagn.1$Preg.6 == 1] <- "NotPreg"
PrDiagn.1$Preg.7[PrDiagn.1$Preg.7 == 1] <- "NotPreg"
PrDiagn.1$Preg.8[PrDiagn.1$Preg.8 == 1] <- "NotPreg"
PrDiagn.1$Preg.9[PrDiagn.1$Preg.9 == 1] <- "NotPreg"

PrDiagn.1$Preg.1[PrDiagn.1$Preg.1 == 21] <- "NotPreg"
PrDiagn.1$Preg.2[PrDiagn.1$Preg.2 == 21] <- "NotPreg"
PrDiagn.1$Preg.3[PrDiagn.1$Preg.3 == 21] <- "NotPreg"
PrDiagn.1$Preg.4[PrDiagn.1$Preg.4 == 21] <- "NotPreg"
PrDiagn.1$Preg.5[PrDiagn.1$Preg.5 == 21] <- "NotPreg"
PrDiagn.1$Preg.6[PrDiagn.1$Preg.6 == 21] <- "NotPreg"
PrDiagn.1$Preg.7[PrDiagn.1$Preg.7 == 21] <- "NotPreg"
PrDiagn.1$Preg.8[PrDiagn.1$Preg.8 == 21] <- "NotPreg"
PrDiagn.1$Preg.9[PrDiagn.1$Preg.9 == 21] <- "NotPreg"

PrDiagn.1$Preg.1[PrDiagn.1$Preg.1 == 31] <- "NotPreg"
PrDiagn.1$Preg.2[PrDiagn.1$Preg.2 == 31] <- "NotPreg"
PrDiagn.1$Preg.3[PrDiagn.1$Preg.3 == 31] <- "NotPreg"
PrDiagn.1$Preg.4[PrDiagn.1$Preg.4 == 31] <- "NotPreg"
PrDiagn.1$Preg.5[PrDiagn.1$Preg.5 == 31] <- "NotPreg"
PrDiagn.1$Preg.6[PrDiagn.1$Preg.6 == 31] <- "NotPreg"
PrDiagn.1$Preg.7[PrDiagn.1$Preg.7 == 31] <- "NotPreg"
PrDiagn.1$Preg.8[PrDiagn.1$Preg.8 == 31] <- "NotPreg"
PrDiagn.1$Preg.9[PrDiagn.1$Preg.9 == 31] <- "NotPreg"

PrDiagn.1$Preg.1[PrDiagn.1$Preg.1 == 41] <- "NotPreg"
PrDiagn.1$Preg.2[PrDiagn.1$Preg.2 == 41] <- "NotPreg"
PrDiagn.1$Preg.3[PrDiagn.1$Preg.3 == 41] <- "NotPreg"
PrDiagn.1$Preg.4[PrDiagn.1$Preg.4 == 41] <- "NotPreg"
PrDiagn.1$Preg.5[PrDiagn.1$Preg.5 == 41] <- "NotPreg"
PrDiagn.1$Preg.6[PrDiagn.1$Preg.6 == 41] <- "NotPreg"
PrDiagn.1$Preg.7[PrDiagn.1$Preg.7 == 41] <- "NotPreg"
PrDiagn.1$Preg.8[PrDiagn.1$Preg.8 == 41] <- "NotPreg"
PrDiagn.1$Preg.9[PrDiagn.1$Preg.9 == 41] <- "NotPreg"

PrDiagn.1$Preg.1[PrDiagn.1$Preg.1 == 51] <- "NotPreg"
PrDiagn.1$Preg.2[PrDiagn.1$Preg.2 == 51] <- "NotPreg"
PrDiagn.1$Preg.3[PrDiagn.1$Preg.3 == 51] <- "NotPreg"
PrDiagn.1$Preg.4[PrDiagn.1$Preg.4 == 51] <- "NotPreg"
PrDiagn.1$Preg.5[PrDiagn.1$Preg.5 == 51] <- "NotPreg"
PrDiagn.1$Preg.6[PrDiagn.1$Preg.6 == 51] <- "NotPreg"
PrDiagn.1$Preg.7[PrDiagn.1$Preg.7 == 51] <- "NotPreg"
PrDiagn.1$Preg.8[PrDiagn.1$Preg.8 == 51] <- "NotPreg"
PrDiagn.1$Preg.9[PrDiagn.1$Preg.9 == 51] <- "NotPreg"

PrDiagn.1$Preg.1[PrDiagn.1$Preg.1 == 2] <- "Preg"
PrDiagn.1$Preg.2[PrDiagn.1$Preg.2 == 2] <- "Preg"
PrDiagn.1$Preg.3[PrDiagn.1$Preg.3 == 2] <- "Preg"
PrDiagn.1$Preg.4[PrDiagn.1$Preg.4 == 2] <- "Preg"
PrDiagn.1$Preg.5[PrDiagn.1$Preg.5 == 2] <- "Preg"
PrDiagn.1$Preg.6[PrDiagn.1$Preg.6 == 2] <- "Preg"
PrDiagn.1$Preg.7[PrDiagn.1$Preg.7 == 2] <- "Preg"
PrDiagn.1$Preg.8[PrDiagn.1$Preg.8 == 2] <- "Preg"
PrDiagn.1$Preg.9[PrDiagn.1$Preg.9 == 2] <- "Preg"

PrDiagn.1$Preg.1[PrDiagn.1$Preg.1 == 22] <- "Preg"
PrDiagn.1$Preg.2[PrDiagn.1$Preg.2 == 22] <- "Preg"
PrDiagn.1$Preg.3[PrDiagn.1$Preg.3 == 22] <- "Preg"
PrDiagn.1$Preg.4[PrDiagn.1$Preg.4 == 22] <- "Preg"
PrDiagn.1$Preg.5[PrDiagn.1$Preg.5 == 22] <- "Preg"
PrDiagn.1$Preg.6[PrDiagn.1$Preg.6 == 22] <- "Preg"
PrDiagn.1$Preg.7[PrDiagn.1$Preg.7 == 22] <- "Preg"
PrDiagn.1$Preg.8[PrDiagn.1$Preg.8 == 22] <- "Preg"
PrDiagn.1$Preg.9[PrDiagn.1$Preg.9 == 22] <- "Preg"

PrDiagn.1$Preg.1[PrDiagn.1$Preg.1 == 32] <- "Preg"
PrDiagn.1$Preg.2[PrDiagn.1$Preg.2 == 32] <- "Preg"
PrDiagn.1$Preg.3[PrDiagn.1$Preg.3 == 32] <- "Preg"
PrDiagn.1$Preg.4[PrDiagn.1$Preg.4 == 32] <- "Preg"
PrDiagn.1$Preg.5[PrDiagn.1$Preg.5 == 32] <- "Preg"
PrDiagn.1$Preg.6[PrDiagn.1$Preg.6 == 32] <- "Preg"
PrDiagn.1$Preg.7[PrDiagn.1$Preg.7 == 32] <- "Preg"
PrDiagn.1$Preg.8[PrDiagn.1$Preg.8 == 32] <- "Preg"
PrDiagn.1$Preg.9[PrDiagn.1$Preg.9 == 32] <- "Preg"

PrDiagn.1$Preg.1[PrDiagn.1$Preg.1 == 42] <- "Preg"
PrDiagn.1$Preg.2[PrDiagn.1$Preg.2 == 42] <- "Preg"
PrDiagn.1$Preg.3[PrDiagn.1$Preg.3 == 42] <- "Preg"
PrDiagn.1$Preg.4[PrDiagn.1$Preg.4 == 42] <- "Preg"
PrDiagn.1$Preg.5[PrDiagn.1$Preg.5 == 42] <- "Preg"
PrDiagn.1$Preg.6[PrDiagn.1$Preg.6 == 42] <- "Preg"
PrDiagn.1$Preg.7[PrDiagn.1$Preg.7 == 42] <- "Preg"
PrDiagn.1$Preg.8[PrDiagn.1$Preg.8 == 42] <- "Preg"
PrDiagn.1$Preg.9[PrDiagn.1$Preg.9 == 42] <- "Preg"

PrDiagn.1$Preg.1[PrDiagn.1$Preg.1 == 52] <- "Preg"
PrDiagn.1$Preg.2[PrDiagn.1$Preg.2 == 52] <- "Preg"
PrDiagn.1$Preg.3[PrDiagn.1$Preg.3 == 52] <- "Preg"
PrDiagn.1$Preg.4[PrDiagn.1$Preg.4 == 52] <- "Preg"
PrDiagn.1$Preg.5[PrDiagn.1$Preg.5 == 52] <- "Preg"
PrDiagn.1$Preg.6[PrDiagn.1$Preg.6 == 52] <- "Preg"
PrDiagn.1$Preg.7[PrDiagn.1$Preg.7 == 52] <- "Preg"
PrDiagn.1$Preg.8[PrDiagn.1$Preg.8 == 52] <- "Preg"
PrDiagn.1$Preg.9[PrDiagn.1$Preg.9 == 52] <- "Preg"

PrDiagn.1$Preg.1[PrDiagn.1$Preg.1 == 3] <- NA
PrDiagn.1$Preg.2[PrDiagn.1$Preg.2 == 3] <- NA
PrDiagn.1$Preg.3[PrDiagn.1$Preg.3 == 3] <- NA
PrDiagn.1$Preg.4[PrDiagn.1$Preg.4 == 3] <- NA
PrDiagn.1$Preg.5[PrDiagn.1$Preg.5 == 3] <- NA
PrDiagn.1$Preg.6[PrDiagn.1$Preg.6 == 3] <- NA
PrDiagn.1$Preg.7[PrDiagn.1$Preg.7 == 3] <- NA
PrDiagn.1$Preg.8[PrDiagn.1$Preg.8 == 3] <- NA
PrDiagn.1$Preg.9[PrDiagn.1$Preg.9 == 3] <- NA

PrDiagn.1$Preg.1[PrDiagn.1$Preg.1 == 53] <- NA
PrDiagn.1$Preg.2[PrDiagn.1$Preg.2 == 53] <- NA
PrDiagn.1$Preg.3[PrDiagn.1$Preg.3 == 53] <- NA
PrDiagn.1$Preg.4[PrDiagn.1$Preg.4 == 53] <- NA
PrDiagn.1$Preg.5[PrDiagn.1$Preg.5 == 53] <- NA
PrDiagn.1$Preg.6[PrDiagn.1$Preg.6 == 53] <- NA
PrDiagn.1$Preg.7[PrDiagn.1$Preg.7 == 53] <- NA
PrDiagn.1$Preg.8[PrDiagn.1$Preg.8 == 53] <- NA
PrDiagn.1$Preg.9[PrDiagn.1$Preg.9 == 53] <- NA
```



## Räkna fram FSCR - 2 sätt.. + Pregins + Räkna ut pregloss
 1. ta fram dräktighetsgivande ins för de som fått kalv 2
  Behöver ha med kalvdat 1 och 2
  behöver ha preg diagn datum 1
  behöver ha preg diagn 1
  2. pregloss: behöver ha datum för pos diagnos och neg diagnos lakt 1
  1. Antingen har första semin, har kalvat men har inte semin 2 = FSC
  2. eller fått dräktighetsdiagnos efter första semin (men kan ha seminerats fler gånger efter det trotts det dvs bör oxå räknas som pregloss)
  3. första ins inom 280 +/- 14 dagar från kalvning - OBS - lägga till formel för dödfödda kalvar om inget datum matchar!!
  

Pregnancy loss: 3 sätt att räkna:
1.	”Preg.loss.diagn.”: Om sista semin är efter första dräktighetsdiagnos => räknat som pregnancy loss.
2.	”Preg.loss.calv.”: Om konstaterad dräktighetsdiagnos men inte kalvat (och kon inte utgått innan förväntat kalvdatum (294 d efter sista semin)
3.	”Preg.loss.diagn.spec.”: Om konstaterad dräktig och sedan konstaterad ej dräktig vid dr us.
5.	”Preg.loss.tot”: Kombination av alla tre ovan – dvs om någon är pregloss=pregloss.

```{r}
PrLoss<-cbind(PrDate[c(1:4)], PrDate.1[c(2:10)], PrDiagn.1[c(2:10)])
PrAI<-cbind(PrLoss,AIdate.1,mk3hi[c(22)])
PrAI$FSCR.1<-ifelse(!is.na(PrAI$AIdate.1)&is.na(PrAI$AIdate.2)&!is.na(PrAI$Calvingdate.2),1,NA)

#   måste lägga till de som fått pos preg diagnos efter första semin "manuellt..." - kolla om funkat
PrAI$FSCR.2<-ifelse(PrAI$AIdate.2>PrAI$PrDate.1 & PrAI$Preg.1 == "Preg" | PrAI$AIdate.2>PrAI$PrDate.2 & PrAI$Preg.2 == "Preg" | PrAI$AIdate.2>PrAI$PrDate.3 & PrAI$Preg.3 == "Preg" | PrAI$AIdate.2>PrAI$PrDate.4 & PrAI$Preg.4 == "Preg" | PrAI$AIdate.2>PrAI$PrDate.5 & PrAI$Preg.5 == "Preg" | PrAI$AIdate.2>PrAI$PrDate.6 & PrAI$Preg.6 == "Preg" | PrAI$AIdate.2>PrAI$PrDate.7 & PrAI$Preg.7 == "Preg" | PrAI$AIdate.2>PrAI$PrDate.8 & PrAI$Preg.8 == "Preg" | PrAI$AIdate.2>PrAI$PrDate.9 & PrAI$Preg.9 == "Preg" , 1, NA)

PrAI$FSCR.x<-rowSums(PrAI[c(38:39)],na.rm=TRUE)
PrAI$FSCR<-NA
PrAI$FSCR<-ifelse(PrAI$FSCR.x>0,"Yes",NA)
  
# Pregins
PrAI$ins.date.min<-ifelse(is.na(PrAI$Calvingdate.2),NA,as.Date((PrAI$Calvingdate.2-294), origin = '1970-01-01'))
PrAI$ins.date.max<-ifelse(is.na(PrAI$Calvingdate.2),NA,as.Date((PrAI$Calvingdate.2-266), origin = '1970-01-01'))
PrAI$ins.date.min<-as.Date(PrAI$ins.date.min, origin = '1970-01-01')
PrAI$ins.date.max<-as.Date(PrAI$ins.date.max, origin = '1970-01-01')

PrAI$Pr.ins.date<-ifelse(PrAI$AIdate.1>PrAI$ins.date.min & PrAI$AIdate.1<PrAI$ins.date.max, PrAI$AIdate.1, 
                      ifelse(PrAI$AIdate.2>PrAI$ins.date.min & PrAI$AIdate.2<PrAI$ins.date.max, PrAI$AIdate.2, 
                             ifelse(PrAI$AIdate.3>PrAI$ins.date.min & PrAI$AIdate.3<PrAI$ins.date.max, PrAI$AIdate.3,
                                    ifelse(PrAI$AIdate.4>PrAI$ins.date.min & PrAI$AIdate.4<PrAI$ins.date.max, PrAI$AIdate.4, 
                                           ifelse(PrAI$AIdate.5>PrAI$ins.date.min & PrAI$AIdate.5<PrAI$ins.date.max, PrAI$AIdate.5, 
                                                  ifelse(PrAI$AIdate.6>PrAI$ins.date.min & PrAI$AIdate.6<PrAI$ins.date.max, PrAI$AIdate.6, 
                                                         ifelse(PrAI$AIdate.7>PrAI$ins.date.min & PrAI$AIdate.7<PrAI$ins.date.max, PrAI$AIdate.7, 
                                                                ifelse(PrAI$AIdate.8>PrAI$ins.date.min & PrAI$AIdate.8<PrAI$ins.date.max, PrAI$AIdate.8, 
                                                                       ifelse(PrAI$AIdate.9>PrAI$ins.date.min & PrAI$AIdate.9<PrAI$ins.date.max, PrAI$AIdate.9, )))))))))

PrAI$Pr.ins.date<-as.Date(PrAI$Pr.ins.date, origin = '1970-01-01')
# OBS - behöver lägga till formel för dödfödda kalvar om inget datum matchar!!

# 1. baserat på ins efter pos preg diagn 
PrAI$PregLoss.1<-ifelse(((PrAI$AIdate.1>PrAI$PrDate.1 & PrAI$Preg.1 == "Preg") | (PrAI$AIdate.1>PrAI$PrDate.2 & PrAI$Preg.2 == "Preg") | (PrAI$AIdate.1>PrAI$PrDate.3 & PrAI$Preg.3 == "Preg") | (PrAI$AIdate.1>PrAI$PrDate.4 & PrAI$Preg.4 == "Preg") | (PrAI$AIdate.1>PrAI$PrDate.5 & PrAI$Preg.5 == "Preg") | (PrAI$AIdate.1>PrAI$PrDate.6 & PrAI$Preg.6 == "Preg") | (PrAI$AIdate.1>PrAI$PrDate.7 & PrAI$Preg.7 == "Preg") | (PrAI$AIdate.1>PrAI$PrDate.8 & PrAI$Preg.8 == "Preg") | (PrAI$AIdate.1>PrAI$PrDate.9 & PrAI$Preg.9 == "Preg")) == TRUE , 1, 
                       ifelse(((PrAI$AIdate.2>PrAI$PrDate.1 & PrAI$Preg.1 == "Preg") | (PrAI$AIdate.2>PrAI$PrDate.2 & PrAI$Preg.2 == "Preg") | (PrAI$AIdate.2>PrAI$PrDate.3 & PrAI$Preg.3 == "Preg") | (PrAI$AIdate.2>PrAI$PrDate.4 & PrAI$Preg.4 == "Preg") | (PrAI$AIdate.2>PrAI$PrDate.5 & PrAI$Preg.5 == "Preg") | (PrAI$AIdate.2>PrAI$PrDate.6 & PrAI$Preg.6 == "Preg") | (PrAI$AIdate.2>PrAI$PrDate.7 & PrAI$Preg.7 == "Preg") | (PrAI$AIdate.2>PrAI$PrDate.8 & PrAI$Preg.8 == "Preg") | (PrAI$AIdate.2>PrAI$PrDate.9 & PrAI$Preg.9 == "Preg")) == TRUE , 1, 
                             ifelse(((PrAI$AIdate.3>PrAI$PrDate.1 & PrAI$Preg.1 == "Preg" )|( PrAI$AIdate.3>PrAI$PrDate.2 & PrAI$Preg.2 == "Preg" )|( PrAI$AIdate.3>PrAI$PrDate.3 & PrAI$Preg.3 == "Preg" )|( PrAI$AIdate.3>PrAI$PrDate.4 & PrAI$Preg.4 == "Preg" )|( PrAI$AIdate.3>PrAI$PrDate.5 & PrAI$Preg.5 == "Preg" )|( PrAI$AIdate.3>PrAI$PrDate.6 & PrAI$Preg.6 == "Preg" )|( PrAI$AIdate.3>PrAI$PrDate.7 & PrAI$Preg.7 == "Preg" )|( PrAI$AIdate.3>PrAI$PrDate.8 & PrAI$Preg.8 == "Preg" )|( PrAI$AIdate.3>PrAI$PrDate.9 & PrAI$Preg.9 == "Preg")) == TRUE , 1, 
                                    ifelse(((PrAI$AIdate.4>PrAI$PrDate.1 & PrAI$Preg.1 == "Preg" )|( PrAI$AIdate.4>PrAI$PrDate.2 & PrAI$Preg.2 == "Preg" )|( PrAI$AIdate.4>PrAI$PrDate.3 & PrAI$Preg.3 == "Preg" )|( PrAI$AIdate.4>PrAI$PrDate.4 & PrAI$Preg.4 == "Preg" )|( PrAI$AIdate.4>PrAI$PrDate.5 & PrAI$Preg.5 == "Preg" )|( PrAI$AIdate.4>PrAI$PrDate.6 & PrAI$Preg.6 == "Preg" )|( PrAI$AIdate.4>PrAI$PrDate.7 & PrAI$Preg.7 == "Preg" )|( PrAI$AIdate.4>PrAI$PrDate.8 & PrAI$Preg.8 == "Preg" )|( PrAI$AIdate.4>PrAI$PrDate.9 & PrAI$Preg.9 == "Preg")) == TRUE , 1, 
                                           ifelse(((PrAI$AIdate.5>PrAI$PrDate.1 & PrAI$Preg.1 == "Preg" )|( PrAI$AIdate.5>PrAI$PrDate.2 & PrAI$Preg.2 == "Preg" )|( PrAI$AIdate.5>PrAI$PrDate.3 & PrAI$Preg.3 == "Preg" )|( PrAI$AIdate.5>PrAI$PrDate.4 & PrAI$Preg.4 == "Preg" )|( PrAI$AIdate.5>PrAI$PrDate.5 & PrAI$Preg.5 == "Preg" )|( PrAI$AIdate.5>PrAI$PrDate.6 & PrAI$Preg.6 == "Preg" )|( PrAI$AIdate.5>PrAI$PrDate.7 & PrAI$Preg.7 == "Preg" )|( PrAI$AIdate.5>PrAI$PrDate.8 & PrAI$Preg.8 == "Preg" )|( PrAI$AIdate.5>PrAI$PrDate.9 & PrAI$Preg.9 == "Preg")) == TRUE , 1, 
                                                  ifelse(((PrAI$AIdate.6>PrAI$PrDate.1 & PrAI$Preg.1 == "Preg" )|( PrAI$AIdate.6>PrAI$PrDate.2 & PrAI$Preg.2 == "Preg" )|( PrAI$AIdate.6>PrAI$PrDate.3 & PrAI$Preg.3 == "Preg" )|( PrAI$AIdate.6>PrAI$PrDate.4 & PrAI$Preg.4 == "Preg" )|( PrAI$AIdate.6>PrAI$PrDate.5 & PrAI$Preg.5 == "Preg" )|( PrAI$AIdate.6>PrAI$PrDate.6 & PrAI$Preg.6 == "Preg" )|( PrAI$AIdate.6>PrAI$PrDate.7 & PrAI$Preg.7 == "Preg" )|( PrAI$AIdate.6>PrAI$PrDate.8 & PrAI$Preg.8 == "Preg" )|( PrAI$AIdate.6>PrAI$PrDate.9 & PrAI$Preg.9 == "Preg")) == TRUE , 1, 
                                                         ifelse(((PrAI$AIdate.7>PrAI$PrDate.1 & PrAI$Preg.1 == "Preg" )|( PrAI$AIdate.7>PrAI$PrDate.2 & PrAI$Preg.2 == "Preg" )|( PrAI$AIdate.7>PrAI$PrDate.3 & PrAI$Preg.3 == "Preg" )|( PrAI$AIdate.7>PrAI$PrDate.4 & PrAI$Preg.4 == "Preg" )|( PrAI$AIdate.7>PrAI$PrDate.5 & PrAI$Preg.5 == "Preg" )|( PrAI$AIdate.7>PrAI$PrDate.6 & PrAI$Preg.6 == "Preg" )|( PrAI$AIdate.7>PrAI$PrDate.7 & PrAI$Preg.7 == "Preg" )|( PrAI$AIdate.7>PrAI$PrDate.8 & PrAI$Preg.8 == "Preg" )|( PrAI$AIdate.7>PrAI$PrDate.9 & PrAI$Preg.9 == "Preg")) == TRUE , 1, 
                                                                ifelse(((PrAI$AIdate.8>PrAI$PrDate.1 & PrAI$Preg.1 == "Preg" )|( PrAI$AIdate.8>PrAI$PrDate.2 & PrAI$Preg.2 == "Preg" )|( PrAI$AIdate.8>PrAI$PrDate.3 & PrAI$Preg.3 == "Preg" )|( PrAI$AIdate.8>PrAI$PrDate.4 & PrAI$Preg.4 == "Preg" )|( PrAI$AIdate.8>PrAI$PrDate.5 & PrAI$Preg.5 == "Preg" )|( PrAI$AIdate.8>PrAI$PrDate.6 & PrAI$Preg.6 == "Preg" )|( PrAI$AIdate.8>PrAI$PrDate.7 & PrAI$Preg.7 == "Preg" )|( PrAI$AIdate.8>PrAI$PrDate.8 & PrAI$Preg.8 == "Preg" )|( PrAI$AIdate.8>PrAI$PrDate.9 & PrAI$Preg.9 == "Preg")) == TRUE , 1, 
                                                                       ifelse(((PrAI$AIdate.9>PrAI$PrDate.1 & PrAI$Preg.1 == "Preg" )|( PrAI$AIdate.9>PrAI$PrDate.2 & PrAI$Preg.2 == "Preg" )|( PrAI$AIdate.9>PrAI$PrDate.3 & PrAI$Preg.3 == "Preg" )|( PrAI$AIdate.9>PrAI$PrDate.4 & PrAI$Preg.4 == "Preg" )|( PrAI$AIdate.9>PrAI$PrDate.5 & PrAI$Preg.5 == "Preg" )|( PrAI$AIdate.9>PrAI$PrDate.6 & PrAI$Preg.6 == "Preg" )|( PrAI$AIdate.9>PrAI$PrDate.7 & PrAI$Preg.7 == "Preg" )|( PrAI$AIdate.9>PrAI$PrDate.8 & PrAI$Preg.8 == "Preg" )|( PrAI$AIdate.9>PrAI$PrDate.9 & PrAI$Preg.9 == "Preg")) == TRUE , 1, NA)))))))))


# 2. konstaterat dräktig men inte kalvat
PrAI$PregLoss.2<-ifelse((PrAI$Preg.1 == "Preg" | PrAI$Preg.2 == "Preg" | PrAI$Preg.3 == "Preg" | PrAI$Preg.4 == "Preg" | PrAI$Preg.5 == "Preg"| PrAI$Preg.6 == "Preg"| PrAI$Preg.7 == "Preg"| PrAI$Preg.8 == "Preg"| PrAI$Preg.9 == "Preg") & (is.na(PrAI$Calvingdate.2)& is.na(PrAI$OutDate) &(((PrAI$last.AI + 294)<'2022-10-03') == TRUE)), 1,NA)


# Felkolla detta - om lucka mellan preg och notpreg..
# 3. baserat på diagnos
PrAI$PregLoss.3<-ifelse(PrAI$Preg.1 == "Preg" & (PrAI$Preg.2 == "NotPreg" | PrAI$Preg.3 == "NotPreg" | PrAI$Preg.4 == "NotPreg" | PrAI$Preg.5 == "NotPreg"| PrAI$Preg.6 == "NotPreg"| PrAI$Preg.7 == "NotPreg"| PrAI$Preg.8 == "NotPreg"| PrAI$Preg.9 == "NotPreg"), 1,
                      ifelse(PrAI$Preg.2 == "Preg" & (PrAI$Preg.3 == "NotPreg" | PrAI$Preg.4 == "NotPreg" | PrAI$Preg.5 == "NotPreg"| PrAI$Preg.6 == "NotPreg"| PrAI$Preg.7 == "NotPreg"| PrAI$Preg.8 == "NotPreg"| PrAI$Preg.9 == "NotPreg"), 1,
                             ifelse(PrAI$Preg.3 == "Preg" & (PrAI$Preg.4 == "NotPreg" | PrAI$Preg.5 == "NotPreg"| PrAI$Preg.6 == "NotPreg"| PrAI$Preg.7 == "NotPreg"| PrAI$Preg.8 == "NotPreg"| PrAI$Preg.9 == "NotPreg"), 1,
                             ifelse(PrAI$Preg.4 == "Preg" & (PrAI$Preg.5 == "NotPreg"| PrAI$Preg.6 == "NotPreg"| PrAI$Preg.7 == "NotPreg"| PrAI$Preg.8 == "NotPreg"| PrAI$Preg.9 == "NotPreg"), 1,
                                    ifelse(PrAI$Preg.5 == "Preg" & (PrAI$Preg.6 == "NotPreg"| PrAI$Preg.7 == "NotPreg"| PrAI$Preg.8 == "NotPreg"| PrAI$Preg.9 == "NotPreg"), 1,
                                           ifelse(PrAI$Preg.6 == "Preg" & (PrAI$Preg.7 == "NotPreg"| PrAI$Preg.8 == "NotPreg"| PrAI$Preg.9 == "NotPreg"), 1,
                                                  ifelse(PrAI$Preg.7 == "Preg" & (PrAI$Preg.8 == "NotPreg"| PrAI$Preg.9 == "NotPreg"), 1,
                                                         ifelse(PrAI$Preg.8 == "Preg" & (PrAI$Preg.9 == "NotPreg"), 1,NA))))))))



PrAI$x.1<-ifelse(((PrAI$AIdate.2>PrAI$PrDate.1 & PrAI$Preg.1 == "Preg") | (PrAI$AIdate.2>PrAI$PrDate.2 & PrAI$Preg.2 == "Preg") | (PrAI$AIdate.2>PrAI$PrDate.3 & PrAI$Preg.3 == "Preg") | (PrAI$AIdate.2>PrAI$PrDate.4 & PrAI$Preg.4 == "Preg") | (PrAI$AIdate.2>PrAI$PrDate.5 & PrAI$Preg.5 == "Preg") | (PrAI$AIdate.2>PrAI$PrDate.6 & PrAI$Preg.6 == "Preg") | (PrAI$AIdate.2>PrAI$PrDate.7 & PrAI$Preg.7 == "Preg") | (PrAI$AIdate.2>PrAI$PrDate.8 & PrAI$Preg.8 == "Preg") | (PrAI$AIdate.2>PrAI$PrDate.9 & PrAI$Preg.9 == "Preg")) == TRUE , 1, NA)

PrAI$x.2<-ifelse(((PrAI$AIdate.3>PrAI$PrDate.1 & PrAI$Preg.1 == "Preg" )|( PrAI$AIdate.3>PrAI$PrDate.2 & PrAI$Preg.2 == "Preg" )|( PrAI$AIdate.3>PrAI$PrDate.3 & PrAI$Preg.3 == "Preg" )|( PrAI$AIdate.3>PrAI$PrDate.4 & PrAI$Preg.4 == "Preg" )|( PrAI$AIdate.3>PrAI$PrDate.5 & PrAI$Preg.5 == "Preg" )|( PrAI$AIdate.3>PrAI$PrDate.6 & PrAI$Preg.6 == "Preg" )|( PrAI$AIdate.3>PrAI$PrDate.7 & PrAI$Preg.7 == "Preg" )|( PrAI$AIdate.3>PrAI$PrDate.8 & PrAI$Preg.8 == "Preg" )|( PrAI$AIdate.3>PrAI$PrDate.9 & PrAI$Preg.9 == "Preg")) == TRUE , 1, NA)

PrAI$x.3<-ifelse(((PrAI$AIdate.4>PrAI$PrDate.1 & PrAI$Preg.1 == "Preg" )|( PrAI$AIdate.4>PrAI$PrDate.2 & PrAI$Preg.2 == "Preg" )|( PrAI$AIdate.4>PrAI$PrDate.3 & PrAI$Preg.3 == "Preg" )|( PrAI$AIdate.4>PrAI$PrDate.4 & PrAI$Preg.4 == "Preg" )|( PrAI$AIdate.4>PrAI$PrDate.5 & PrAI$Preg.5 == "Preg" )|( PrAI$AIdate.4>PrAI$PrDate.6 & PrAI$Preg.6 == "Preg" )|( PrAI$AIdate.4>PrAI$PrDate.7 & PrAI$Preg.7 == "Preg" )|( PrAI$AIdate.4>PrAI$PrDate.8 & PrAI$Preg.8 == "Preg" )|( PrAI$AIdate.4>PrAI$PrDate.9 & PrAI$Preg.9 == "Preg")) == TRUE , 1, NA)

PrAI$x.4<-ifelse(((PrAI$AIdate.5>PrAI$PrDate.1 & PrAI$Preg.1 == "Preg" )|( PrAI$AIdate.5>PrAI$PrDate.2 & PrAI$Preg.2 == "Preg" )|( PrAI$AIdate.5>PrAI$PrDate.3 & PrAI$Preg.3 == "Preg" )|( PrAI$AIdate.5>PrAI$PrDate.4 & PrAI$Preg.4 == "Preg" )|( PrAI$AIdate.5>PrAI$PrDate.5 & PrAI$Preg.5 == "Preg" )|( PrAI$AIdate.5>PrAI$PrDate.6 & PrAI$Preg.6 == "Preg" )|( PrAI$AIdate.5>PrAI$PrDate.7 & PrAI$Preg.7 == "Preg" )|( PrAI$AIdate.5>PrAI$PrDate.8 & PrAI$Preg.8 == "Preg" )|( PrAI$AIdate.5>PrAI$PrDate.9 & PrAI$Preg.9 == "Preg")) == TRUE , 1, NA)

PrAI$x.5<-ifelse(((PrAI$AIdate.6>PrAI$PrDate.1 & PrAI$Preg.1 == "Preg" )|( PrAI$AIdate.6>PrAI$PrDate.2 & PrAI$Preg.2 == "Preg" )|( PrAI$AIdate.6>PrAI$PrDate.3 & PrAI$Preg.3 == "Preg" )|( PrAI$AIdate.6>PrAI$PrDate.4 & PrAI$Preg.4 == "Preg" )|( PrAI$AIdate.6>PrAI$PrDate.5 & PrAI$Preg.5 == "Preg" )|( PrAI$AIdate.6>PrAI$PrDate.6 & PrAI$Preg.6 == "Preg" )|( PrAI$AIdate.6>PrAI$PrDate.7 & PrAI$Preg.7 == "Preg" )|( PrAI$AIdate.6>PrAI$PrDate.8 & PrAI$Preg.8 == "Preg" )|( PrAI$AIdate.6>PrAI$PrDate.9 & PrAI$Preg.9 == "Preg")) == TRUE , 1, NA)

PrAI$x.6<-ifelse(((PrAI$AIdate.7>PrAI$PrDate.1 & PrAI$Preg.1 == "Preg" )|( PrAI$AIdate.7>PrAI$PrDate.2 & PrAI$Preg.2 == "Preg" )|( PrAI$AIdate.7>PrAI$PrDate.3 & PrAI$Preg.3 == "Preg" )|( PrAI$AIdate.7>PrAI$PrDate.4 & PrAI$Preg.4 == "Preg" )|( PrAI$AIdate.7>PrAI$PrDate.5 & PrAI$Preg.5 == "Preg" )|( PrAI$AIdate.7>PrAI$PrDate.6 & PrAI$Preg.6 == "Preg" )|( PrAI$AIdate.7>PrAI$PrDate.7 & PrAI$Preg.7 == "Preg" )|( PrAI$AIdate.7>PrAI$PrDate.8 & PrAI$Preg.8 == "Preg" )|( PrAI$AIdate.7>PrAI$PrDate.9 & PrAI$Preg.9 == "Preg")) == TRUE , 1, NA)

PrAI$x.7<-ifelse(((PrAI$AIdate.8>PrAI$PrDate.1 & PrAI$Preg.1 == "Preg" )|( PrAI$AIdate.8>PrAI$PrDate.2 & PrAI$Preg.2 == "Preg" )|( PrAI$AIdate.8>PrAI$PrDate.3 & PrAI$Preg.3 == "Preg" )|( PrAI$AIdate.8>PrAI$PrDate.4 & PrAI$Preg.4 == "Preg" )|( PrAI$AIdate.8>PrAI$PrDate.5 & PrAI$Preg.5 == "Preg" )|( PrAI$AIdate.8>PrAI$PrDate.6 & PrAI$Preg.6 == "Preg" )|( PrAI$AIdate.8>PrAI$PrDate.7 & PrAI$Preg.7 == "Preg" )|( PrAI$AIdate.8>PrAI$PrDate.8 & PrAI$Preg.8 == "Preg" )|( PrAI$AIdate.8>PrAI$PrDate.9 & PrAI$Preg.9 == "Preg")) == TRUE , 1, NA)

PrAI$x.8<-ifelse(((PrAI$AIdate.9>PrAI$PrDate.1 & PrAI$Preg.1 == "Preg" )|( PrAI$AIdate.9>PrAI$PrDate.2 & PrAI$Preg.2 == "Preg" )|( PrAI$AIdate.9>PrAI$PrDate.3 & PrAI$Preg.3 == "Preg" )|( PrAI$AIdate.9>PrAI$PrDate.4 & PrAI$Preg.4 == "Preg" )|( PrAI$AIdate.9>PrAI$PrDate.5 & PrAI$Preg.5 == "Preg" )|( PrAI$AIdate.9>PrAI$PrDate.6 & PrAI$Preg.6 == "Preg" )|( PrAI$AIdate.9>PrAI$PrDate.7 & PrAI$Preg.7 == "Preg" )|( PrAI$AIdate.9>PrAI$PrDate.8 & PrAI$Preg.8 == "Preg" )|( PrAI$AIdate.9>PrAI$PrDate.9 & PrAI$Preg.9 == "Preg")) == TRUE , 1, NA)

PrAI$Pregloss.x<-rowSums(PrAI[c(46:53)],na.rm=TRUE)
PrAI$Pregloss.4<-NA
PrAI$Pregloss.4<-ifelse(PrAI$Pregloss.x>0,1,NA)
PrAI$Pregloss.y<-rowSums(PrAI[c(45:47,57)],na.rm=TRUE)
PrAI$Pregloss.5<-NA
PrAI$Pregloss.5<-ifelse(PrAI$Pregloss.y>0,"Yes",NA)
PrAI$Preg<-ifelse(PrAI$Preg.1 == "Preg"|PrAI$Preg.2 == "Preg"|PrAI$Preg.3 == "Preg"|PrAI$Preg.4 == "Preg"|PrAI$Preg.5 == "Preg"|PrAI$Preg.6 == "Preg"|PrAI$Preg.7 == "Preg"|PrAI$Preg.8 == "Preg"|PrAI$Preg.9 == "Preg",1,0)
```

## räkna fram ytterligare fruktsamhetsvariabler

```{r,echo =FALSE, include=FALSE}
frukt.1<-as.data.frame(PrAI[c(1:4,24,36,41,44,59,60)])
frukt.1$CFI<-NA
frukt.1$CFI<-NA
frukt.1$CLI.dr<-NA
frukt.1$IPL<-NA
frukt.1$IPL.dr<-NA
frukt.1$CFI<-as.numeric(frukt.1$AIdate.1-frukt.1$Calvingdate.1)
frukt.1$CLI<-as.numeric(frukt.1$last.AI-frukt.1$Calvingdate.1)
frukt.1$CLI.dr<-as.numeric(frukt.1$Pr.ins.date-frukt.1$Calvingdate.1)
frukt.1$IPL<-frukt.1$CLI-frukt.1$CFI
frukt.1$IPL.dr<-frukt.1$CLI.dr-frukt.1$CFI

frukt.1<-left_join(frukt.1, EI.1[c(1:2)], by = "CowID", copy = FALSE, suffix = c("", ".f1"), keep = FALSE, na_matches = "na")

frukt.1<-left_join(frukt.1, Event.1[c(1,14)], by = "CowID", copy = FALSE, suffix = c("", ".f1"), keep = FALSE, na_matches = "na")

frukt.1<-left_join(frukt.1, DIM.1[c(1,11:13)], by = "CowID", copy = FALSE, suffix = c("", ".f1"), keep = FALSE, na_matches = "na")

frukt.1<-left_join(frukt.1, SCC.x, by = "CowID", copy = FALSE, suffix = c("", ".f1"), keep = FALSE, na_matches = "na")
```


# Merga inkluderade djur + harst + IngUtg + laktavk + Sindat + Provmj + Semin
```{r,echo =FALSE, include=FALSE}
Part.2<-left_join(mk3hilnp[c(1,2,21,3,8,13,23,25,29:40)], frukt.1[c(1,5:10,14,11:13,15:24)], by = "CowID", copy = FALSE, suffix = c("", ".f1"), keep = FALSE, na_matches = "na")
Part.2<-Part.2[c(1:6,33:35,7,12:14,8:9,15:32,36:39)]
```

```{r}
library(writexl)
write_xlsx(Part.2, "Preg.xlsx")
```


codes<-setnames(codes, old = c('växakod','växakod_text','sjukgrupp'), 
         new = c('DiagCode','DiagnText','DisKat'))

# merga sjukt
```{r,echo =FALSE, include=FALSE}
library("gen5helper")
j1<-read_excel("data/Sjukt_del_2_-_2022-08-02.xlsx")
j2<-read_excel("data/Sjukt_del_2_-_2023-01-02.xlsx")
codes<-read_excel("DisCodes.xlsx")
codes<-codes[c(1:3)]
```


```{r,echo =FALSE, include=FALSE}
jt<-rbind(j1,j2)
ujt<-unique(jt) # remove duplicates
fujt<-filter(ujt, Gård %in% c("B","D","E","F","H","I","J","K","L","M","Q","R","T","U","V","X","Y","Z"))
dfujt<-filter(fujt, Händelsedatum > '2020-09-30')
dd<-dfujt[c(1,2,13:14)]

dd<-unique(dd)
dd<-setnames(dd, old = c('KoID','Diagnosnr','Händelsedatum','Diagnoskod, gammal'), 
         new = c('CowID','Diagnr','DiagnDate','DiagCode'))
dd<-left_join(dd,codes, by = "DiagCode", copy = FALSE, suffix = c("", ""), keep = FALSE, na_matches = "na")

#ta bort diagnoser för friska djur
dd$Diagnr<-ifelse(dd$DisKat == "Frisk",NA,dd$Diagnr)
dd$DiagnDate<-ifelse(dd$DisKat == "Frisk",NA,dd$DiagnDate)
dd$DiagCode<-ifelse(dd$DisKat == "Frisk",NA,dd$DiagCode)
dd$DiagnText<-ifelse(dd$DisKat == "Frisk",NA,dd$DiagnText)
dd$DisKat<-ifelse(dd$DisKat == "Frisk",NA,dd$DisKat)
dd$DiagnDate<-as.Date(as.character(as.POSIXct(dd$DiagnDate, origin = '1970-01-01')))

dd1<-filter(dd, Diagnr == 1)
dd2<-filter(dd, Diagnr == 2)
dd3<-filter(dd, Diagnr == 3)
dd4<-filter(dd, Diagnr == 4)
dd5<-filter(dd, Diagnr == 5)
dd6<-filter(dd, Diagnr == 6)
dd7<-filter(dd, Diagnr == 7) # max 7 diagnoser bland inkluderade kor
md<-left_join(dd1,dd2, by = "CowID", copy = FALSE, suffix = c("", ".2"), keep = FALSE, na_matches = "na")
md<-left_join(md, dd3, by = "CowID", copy = FALSE, suffix = c("", ".3"), keep = FALSE, na_matches = "na")
md<-left_join(md, dd4, by = "CowID", copy = FALSE, suffix = c("", ".4"), keep = FALSE, na_matches = "na")
md<-left_join(md, dd5, by = "CowID", copy = FALSE, suffix = c("", ".5"), keep = FALSE, na_matches = "na")
md<-left_join(md, dd6, by = "CowID", copy = FALSE, suffix = c("", ".6"), keep = FALSE, na_matches = "na")
md<-left_join(md, dd7, by = "CowID", copy = FALSE, suffix = c("", ".7"), keep = FALSE, na_matches = "na")


md<-left_join(Part.2[c(1)], md, by = "CowID", copy = FALSE, suffix = c("", ""), keep = FALSE, na_matches = "na")
md<-md[-c(164:166),] # due to duplicated rows
```

## diagnoser lakt 1 + antal diagnoser
```{r}
ndd<-md[c(1,2,7,12,17,22,27,32)]
ddate<-md[c(1,3,8,13,18,23,28,33)]
dkat<-md[c(1,6,11,16,21,26,31,36)]

ddate.1<-cbind(k.date[c(1:4)],ddate[c(2:8)])
ddate.1$DiagnDate[ddate.1$DiagnDate>Date$Calvingdate.2]<-NA
ddate.1$DiagnDate.2[ddate.1$DiagnDate.2>=Date$Calvingdate.2]<-NA
ddate.1$DiagnDate.3[ddate.1$DiagnDate.3>=Date$Calvingdate.2]<-NA
ddate.1$DiagnDate.4[ddate.1$DiagnDate.4>=Date$Calvingdate.2]<-NA
ddate.1$DiagnDate.5[ddate.1$DiagnDate.5>=Date$Calvingdate.2]<-NA
ddate.1$DiagnDate.6[ddate.1$DiagnDate.6>=Date$Calvingdate.2]<-NA
ddate.1$DiagnDate.7[ddate.1$DiagnDate.7>=Date$Calvingdate.2]<-NA
ddate.1$DiagnDate<-as.Date(as.character(as.POSIXct(ddate.1$DiagnDate)))
ddate.1$DiagnDate.2<-as.Date(as.character(as.POSIXct(ddate.1$DiagnDate.2)))
ddate.1$DiagnDate.3<-as.Date(as.character(as.POSIXct(ddate.1$DiagnDate.3)))
ddate.1$DiagnDate.4<-as.Date(as.character(as.POSIXct(ddate.1$DiagnDate.4)))
ddate.1$DiagnDate.5<-as.Date(as.character(as.POSIXct(ddate.1$DiagnDate.5)))
ddate.1$DiagnDate.6<-as.Date(as.character(as.POSIXct(ddate.1$DiagnDate.6)))
ddate.1$DiagnDate.7<-as.Date(as.character(as.POSIXct(ddate.1$DiagnDate.7)))

ddate.1<-ddate.1[c(1,5:11)]
ndd.1<-ndd
ndd.1$Diagnr<-ifelse(is.na(ddate.1$DiagnDate),NA,ndd.1$Diagnr)
ndd.1$Diagnr.2<-ifelse(is.na(ddate.1$DiagnDate.2),NA,ndd.1$Diagnr.2)
ndd.1$Diagnr.3<-ifelse(is.na(ddate.1$DiagnDate.3),NA,ndd.1$Diagnr.3)
ndd.1$Diagnr.4<-ifelse(is.na(ddate.1$DiagnDate.4),NA,ndd.1$Diagnr.4)
ndd.1$Diagnr.5<-ifelse(is.na(ddate.1$DiagnDate.5),NA,ndd.1$Diagnr.5)
ndd.1$Diagnr.6<-ifelse(is.na(ddate.1$DiagnDate.6),NA,ndd.1$Diagnr.6)
ndd.1$Diagnr.7<-ifelse(is.na(ddate.1$DiagnDate.7),NA,ndd.1$Diagnr.7)

dkat.1<-dkat
dkat.1$DisKat<-ifelse(is.na(ddate.1$DiagnDate),NA,dkat.1$DisKat)
dkat.1$DisKat.2<-ifelse(is.na(ddate.1$DiagnDate.2),NA,dkat.1$DisKat.2)
dkat.1$DisKat.3<-ifelse(is.na(ddate.1$DiagnDate.3),NA,dkat.1$DisKat.3)
dkat.1$DisKat.4<-ifelse(is.na(ddate.1$DiagnDate.4),NA,dkat.1$DisKat.4)
dkat.1$DisKat.5<-ifelse(is.na(ddate.1$DiagnDate.5),NA,dkat.1$DisKat.5)
dkat.1$DisKat.6<-ifelse(is.na(ddate.1$DiagnDate.6),NA,dkat.1$DisKat.6)
dkat.1$DisKat.7<-ifelse(is.na(ddate.1$DiagnDate.7),NA,dkat.1$DisKat.7)

ndd.1[c(2:8)]<-ifelse(ndd.1[c(2:8)]>0,1,NA)
ndd.1$n.dis<-rowSums(ndd.1[c(2:8)],na.rm=TRUE)
```

# Merga inkluderade djur + harst + IngUtg + laktavk + Sindat + Provmj + Semin + Sjukt
```{r,echo =FALSE, include=FALSE}
Part.2<-left_join(Part.2, ndd.1[c(1,9)], by = "CowID", copy = FALSE, suffix = c("", ""), keep = FALSE, na_matches = "na")
Part.2<-left_join(Part.2, dkat.1, by = "CowID", copy = FALSE, suffix = c("",""), keep = FALSE, na_matches = "na")
```

```{r}
library("writexl")
write_xlsx(Part.2, "Part.2.xlsx")
```
