Raw File
using DataFrames, CSV, Statistics, Dates

function convertdays2weeks(x)
    return Int.(round.(x/7, RoundUp))
end

function convertdays23weeks(x)
    return Int.(round.(x/21, RoundUp))
end

cd(joinpath(ENV["HOME"], "Dropbox", "McKay_CodeChecking", "Code", "Fig4"))

df = CSV.read("../../Data/Table S11.csv")

# make sure all missing observed are unobserved
df[ismissing.(df[:Observed]), :Observed] = 0

# for all without death dates, make today and unobserved
x = (Dates.today())
x = map(p -> p.value, [Month(x) Day(x) Year(x)-Year(2000)])
y = join(x, "/")
df[ismissing.(df[:DeathDate]), :DeathDate] .= y
df[:DeathDate] = map(p -> Dates.Date(p, "m/dd/yy") + Year(2000), df[:DeathDate])

# and calculate lifespan
# put in temp hatch date for some:
df[:HatchDate] = map(p -> Dates.Date(p, "m/dd/yy") + Year(2000), df[:HatchDate])

#df[:DeathDate] = map(p -> Dates.Date(p, "mm/dd/yy") + Year(2000), df[df[:DeathDate], :DeathDate])
df[:Lifespan_days] = df[:DeathDate] .- df[:HatchDate]
df[:Lifespan_days] = map(p -> p.value, df[:Lifespan_days])

#remove Array{Missing,1} from df
df = df[:,map(p -> typeof(df[p]) != Array{Missing,1}, names(df))]

df[:Lifespan_weeks] = convertdays2weeks(df[:Lifespan_days])
df[:Lifespan_3weeks] = convertdays23weeks(df[:Lifespan_days])

# export for lifespan alone
CSV.write("firstlifespandata.csv", df)
back to top