This lab journal replicates table 1.


1 Custom functions

  • fpackage.check: Check if packages are installed (and install if not) in R (source).
rm(list = ls())

fpackage.check <- function(packages) {
    lapply(packages, FUN = function(x) {
        if (!require(x, character.only = TRUE)) {
            install.packages(x, dependencies = TRUE)
            library(x, character.only = TRUE)
        }
    })
}

2 Packages

  • tidyverse: tidy data manipulations
  • kableExtra: creating tables in consistent formatting
packages = c("tidyverse", "kableExtra")

fpackage.check(packages)

3 Input

We use one processed dataset.

load(file = "./data/processed/df_starting.rda")

4 Tables

4.1 Table 1

Descriptives

columns <- c("Min", "Max", "Mean", "SD")


rows <- c("Gender", "Man", "Woman", "Missing", "Ethnicity", "Ethnic majority", "Ethnic minority", "Caribbean",
    "Turkish", "Moroccan", "Other", "University", "Erasmus University", "Leiden University", "Radboud University",
    "University of Groningen", "Delft University of Technology", "Eindhoven University of Technology",
    "Tilburg University", "Maastricht University", "University of Twente", "Utrecht University", "University of Amsterdam",
    "Vrije Universiteit Amsterdam", "Wageningen University and Research Centre", "<strong>PhD Cohort</strong></p>",
    "<strong>Starting to publish</strong></p>", "Source: Dutch Doctoral Recipients (D-cubed) data 1990-2019")


t1 <- data.frame(matrix(nrow = length(rows), ncol = length(columns)))

colnames(t1) <- columns
rownames(t1) <- rows


t1[c(2:4), 3] <- prop.table(table(df_starting$gender))[1:3]  # gender
t1[c(6, 7, 11), 3] <- prop.table(table(df_starting$ethnicity2))[1:3]  # ethnicity
t1[c(8:10), 3] <- prop.table(table(df_starting$ethnicity))[2:4]  # specific ethnic groups
t1[c(13:25), 3] <- prop.table(table(df_starting$uni))[1:13]  # university of doctorate
t1[26, c(1:3)] <- as.numeric(summary(df_starting$phd_cohort)[c(1, 6, 4)])  # phd cohort
t1[26, 4] <- sd(df_starting$phd_cohort)  # se phd cohort
t1[27, 3] <- prop.table(table(df_starting$start_pub))[2]  # starting to publish

t1[c(2:4, 6:11, 13:25, 27), c(1, 2)] <- c(rep(0, times = 23), rep(1, times = 23))  # binary variables min/max


t1[c(2:4, 6:11, 13:27), 3] <- format(round(t1[c(2:4, 6:11, 13:27), 3], 2), nsmall = 2)  # rounding to 2 decimals
t1[26, c(1, 2, 4)] <- format(round(t1[26, c(1, 2, 4)], 2), nsmall = 2)  # rounding

t1[is.na(t1)] <- ""
t1 %>%
    kable(format = "html", caption = "<b>Table 1.</b> Descriptive statistics for analyses `starting to publish` (N=85,788)",
        escape = FALSE) %>%
    row_spec(row = 28, italic = T) %>%
    row_spec(row = c(1, 5, 12), bold = T) %>%
    kable_classic(full_width = F, html_font = "Cambria") %>%
    add_indent(c(6, 7, 11), level_of_indent = 1) %>%
    add_indent(c(8, 9, 10), level_of_indent = 2) %>%
    kable_styling(font_size = 14) -> table1

table1
Table 1. Descriptive statistics for analyses starting to publish (N=85,788)
Min Max Mean SD
Gender
Man 0 1 0.38
Woman 0 1 0.29
Missing 0 1 0.33
Ethnicity
Ethnic majority 0 1 0.62
Ethnic minority 0 1 0.02
Caribbean 0 1 0.01
Turkish 0 1 0.01
Moroccan 0 1 0.01
Other 0 1 0.36
University
Erasmus University 0 1 0.07
Leiden University 0 1 0.06
Radboud University 0 1 0.09
University of Groningen 0 1 0.12
Delft University of Technology 0 1 0.08
Eindhoven University of Technology 0 1 0.09
Tilburg University 0 1 0.03
Maastricht University 0 1 0.06
University of Twente 0 1 0.06
Utrecht University 0 1 0.09
University of Amsterdam 0 1 0.12
Vrije Universiteit Amsterdam 0 1 0.08
Wageningen University and Research Centre 0 1 0.07
PhD Cohort 0.00 29.00 18.39 7.87
Starting to publish 0 1 0.18
Source: Dutch Doctoral Recipients (D-cubed) data 1990-2019
t1 <- data.frame(lapply(t1, function(x) {
    gsub("\\.", ",", x)
}))

write.csv(t1, file = "C://DDR/tab1.csv")

LS0tDQp0aXRsZTogIlRhYmxlIDEiDQpkYXRlOiAiTGFzdCBjb21waWxlZCBvbiBgciBmb3JtYXQoU3lzLnRpbWUoKSwgJyVCLCAlWScpYCINCm91dHB1dDogDQogIGh0bWxfZG9jdW1lbnQ6DQogICAgY3NzOiB0d2Vha3MuY3NzDQogICAgdG9jOiAgdHJ1ZQ0KICAgIHRvY19mbG9hdDogdHJ1ZQ0KICAgIG51bWJlcl9zZWN0aW9uczogdHJ1ZQ0KICAgIGNvZGVfZm9sZGluZzogc2hvdw0KICAgIGNvZGVfZG93bmxvYWQ6IHllcw0KICAgIA0KLS0tICANCg0KDQoNCmBgYHtyLCBnbG9iYWxzZXR0aW5ncywgZWNobz1GQUxTRSwgd2FybmluZz1GQUxTRSwgbWVzc2FnZT1GQUxTRSwgcmVzdWx0cz0naGlkZSd9DQoNCmxpYnJhcnkoa25pdHIpDQpvcHRzX2NodW5rJHNldCh0aWR5Lm9wdHM9bGlzdCh3aWR0aC5jdXRvZmY9MTAwKSx0aWR5PVRSVUUsIHdhcm5pbmcgPSBGQUxTRSwgbWVzc2FnZSA9IEZBTFNFLGNvbW1lbnQgPSAiIz4iLCBjYWNoZT1UUlVFLCBjbGFzcy5zb3VyY2U9YygidGVzdCIpLCBjbGFzcy5vdXRwdXQ9YygidGVzdDIiKSwgY2FjaGUubGF6eSA9IEZBTFNFKQ0Kb3B0aW9ucyh3aWR0aCA9IDEwMCkNCnJnbDo6c2V0dXBLbml0cigpDQoNCmNvbG9yaXplIDwtIGZ1bmN0aW9uKHgsIGNvbG9yKSB7c3ByaW50ZigiPHNwYW4gc3R5bGU9J2NvbG9yOiAlczsnPiVzPC9zcGFuPiIsIGNvbG9yLCB4KSB9DQoNCmBgYA0KDQpgYGB7ciBrbGlwcHksIGVjaG89RkFMU0UsIGluY2x1ZGU9VFJVRSwgZXZhbD1UUlVFfQ0Ka2xpcHB5OjprbGlwcHkocG9zaXRpb24gPSBjKCd0b3AnLCAncmlnaHQnKSkNCiNrbGlwcHk6OmtsaXBweShjb2xvciA9ICdkYXJrcmVkJykNCiNrbGlwcHk6OmtsaXBweSh0b29sdGlwX21lc3NhZ2UgPSAnQ2xpY2sgdG8gY29weScsIHRvb2x0aXBfc3VjY2VzcyA9ICdEb25lJykNCmBgYA0KDQoNCi0tLS0NCg0KVGhpcyBsYWIgam91cm5hbCByZXBsaWNhdGVzIHRhYmxlIDEuIA0KICANCg0KLS0tLQ0KDQojIEN1c3RvbSBmdW5jdGlvbnMNCg0KLSBgZnBhY2thZ2UuY2hlY2tgOiBDaGVjayBpZiBwYWNrYWdlcyBhcmUgaW5zdGFsbGVkIChhbmQgaW5zdGFsbCBpZiBub3QpIGluIFIgKFtzb3VyY2VdKGh0dHBzOi8vdmJhbGlnYS5naXRodWIuaW8vdmVyaWZ5LXRoYXQtci1wYWNrYWdlcy1hcmUtaW5zdGFsbGVkLWFuZC1sb2FkZWQvKSkuICANCg0KDQpgYGB7ciwgcmVzdWx0cz0naGlkZSd9DQoNCnJtKGxpc3QgPSBscygpKQ0KDQpmcGFja2FnZS5jaGVjayA8LSBmdW5jdGlvbihwYWNrYWdlcykgew0KICBsYXBwbHkocGFja2FnZXMsIEZVTiA9IGZ1bmN0aW9uKHgpIHsNCiAgICBpZiAoIXJlcXVpcmUoeCwgY2hhcmFjdGVyLm9ubHkgPSBUUlVFKSkgew0KICAgICAgaW5zdGFsbC5wYWNrYWdlcyh4LCBkZXBlbmRlbmNpZXMgPSBUUlVFKQ0KICAgICAgbGlicmFyeSh4LCBjaGFyYWN0ZXIub25seSA9IFRSVUUpDQogICAgfQ0KICB9KQ0KfQ0KDQoNCmBgYA0KDQoNCi0tLSAgDQoNCiMgUGFja2FnZXMNCg0KLSBgdGlkeXZlcnNlYDogdGlkeSBkYXRhIG1hbmlwdWxhdGlvbnMNCi0gYGthYmxlRXh0cmFgOiBjcmVhdGluZyB0YWJsZXMgaW4gY29uc2lzdGVudCBmb3JtYXR0aW5nDQoNCg0KYGBge3IsIHJlc3VsdHM9J2hpZGUnfQ0KDQpwYWNrYWdlcyA9IGMoInRpZHl2ZXJzZSIsICJrYWJsZUV4dHJhIikNCg0KZnBhY2thZ2UuY2hlY2socGFja2FnZXMpDQoNCmBgYA0KDQoNCi0tLSANCg0KIyBJbnB1dA0KDQoNCg0KV2UgdXNlIG9uZSBwcm9jZXNzZWQgZGF0YXNldC4NCg0KKiBbZGZfc3RhcnRpbmcucmRhXSgpOiBkYXRhc2V0IG9mIFBoRHMgd2l0aCBhbGwgcmVsZXZhbnQgdmFyaWFibGVzOiBnZW5kZXIgKyBldGhuaWNpdHkgKyB1bml2ZXJzaXR5ICsgUGhEIHllYXIgIA0KICAgIC0gRm9yIGNvbnN0cnVjdGlvbiBvZiB0aGlzIGRhdGFzZXQgc2VlIFtEZXBlbmRlbnQgVmFyaWFibGVzIDogU3RhcnRpbmcgYW5kIFN0b3BwaW5nIHRvIFB1Ymxpc2hdKGRhdGFwcmVwYXJhdGlvbi5odG1sKSAgDQogICAgLSBuYW1lIG9mIGRhdGFzZXQ6IGBkZl9zdGFydGluZ2AgDQogICAgDQoNCmBgYHtyIGRhdGF9DQoNCmxvYWQoZmlsZSA9ICIuL2RhdGEvcHJvY2Vzc2VkL2RmX3N0YXJ0aW5nLnJkYSIpDQoNCmBgYA0KDQoNCg0KDQojIFRhYmxlcw0KDQoNCiMjIFRhYmxlIDENCg0KRGVzY3JpcHRpdmVzDQoNCmBgYHtyfQ0KDQpjb2x1bW5zIDwtIGMoIk1pbiIsICJNYXgiLCAiTWVhbiIsICJTRCIpDQoNCg0Kcm93cyA8LSBjKCJHZW5kZXIiLCAiTWFuIiwgIldvbWFuIiwgIk1pc3NpbmciLCAiRXRobmljaXR5IiwgIkV0aG5pYyBtYWpvcml0eSIsICJFdGhuaWMgbWlub3JpdHkiLCAiQ2FyaWJiZWFuIiwgIlR1cmtpc2giLCAiTW9yb2NjYW4iLCAiT3RoZXIiLCAiVW5pdmVyc2l0eSIsICJFcmFzbXVzIFVuaXZlcnNpdHkiLCAiTGVpZGVuIFVuaXZlcnNpdHkiLCAiUmFkYm91ZCBVbml2ZXJzaXR5IiwgIlVuaXZlcnNpdHkgb2YgR3JvbmluZ2VuIiwgIkRlbGZ0IFVuaXZlcnNpdHkgb2YgVGVjaG5vbG9neSIsICJFaW5kaG92ZW4gVW5pdmVyc2l0eSBvZiBUZWNobm9sb2d5IiwgIlRpbGJ1cmcgVW5pdmVyc2l0eSIsICJNYWFzdHJpY2h0IFVuaXZlcnNpdHkiLCAiVW5pdmVyc2l0eSBvZiBUd2VudGUiLCAiVXRyZWNodCBVbml2ZXJzaXR5IiwgIlVuaXZlcnNpdHkgb2YgQW1zdGVyZGFtIiwgIlZyaWplIFVuaXZlcnNpdGVpdCBBbXN0ZXJkYW0iLCAiV2FnZW5pbmdlbiBVbml2ZXJzaXR5IGFuZCBSZXNlYXJjaCBDZW50cmUiLCAiPHN0cm9uZz5QaEQgQ29ob3J0PC9zdHJvbmc+PC9wPiIsICI8c3Ryb25nPlN0YXJ0aW5nIHRvIHB1Ymxpc2g8L3N0cm9uZz48L3A+IiwgIlNvdXJjZTogRHV0Y2ggRG9jdG9yYWwgUmVjaXBpZW50cyAoRC1jdWJlZCkgZGF0YSAxOTkwLTIwMTkiKQ0KDQoNCnQxIDwtIGRhdGEuZnJhbWUobWF0cml4KG5yb3c9bGVuZ3RoKHJvd3MpLCBuY29sPWxlbmd0aChjb2x1bW5zKSkpDQoNCmNvbG5hbWVzKHQxKSA8LSBjb2x1bW5zDQpyb3duYW1lcyh0MSkgPC0gcm93cw0KDQoNCnQxW2MoMjo0KSwzXSA8LSBwcm9wLnRhYmxlKHRhYmxlKGRmX3N0YXJ0aW5nJGdlbmRlcikpWzE6M10gIyBnZW5kZXINCnQxW2MoNiw3LDExKSwzXSA8LSBwcm9wLnRhYmxlKHRhYmxlKGRmX3N0YXJ0aW5nJGV0aG5pY2l0eTIpKVsxOjNdICMgZXRobmljaXR5DQp0MVtjKDg6MTApLDNdIDwtIHByb3AudGFibGUodGFibGUoZGZfc3RhcnRpbmckZXRobmljaXR5KSlbMjo0XSAjIHNwZWNpZmljIGV0aG5pYyBncm91cHMNCnQxW2MoMTM6MjUpLDNdIDwtIHByb3AudGFibGUodGFibGUoZGZfc3RhcnRpbmckdW5pKSlbMToxM10gIyB1bml2ZXJzaXR5IG9mIGRvY3RvcmF0ZQ0KdDFbMjYsYygxOjMpXSA8LSBhcy5udW1lcmljKHN1bW1hcnkoZGZfc3RhcnRpbmckcGhkX2NvaG9ydClbYygxLDYsNCldKSAjIHBoZCBjb2hvcnQNCnQxWzI2LDRdIDwtIHNkKGRmX3N0YXJ0aW5nJHBoZF9jb2hvcnQpICMgc2UgcGhkIGNvaG9ydA0KdDFbMjcsM10gPC0gcHJvcC50YWJsZSh0YWJsZShkZl9zdGFydGluZyRzdGFydF9wdWIpKVsyXSAjIHN0YXJ0aW5nIHRvIHB1Ymxpc2gNCg0KdDFbYygyOjQsNjoxMSwxMzoyNSwyNyksYygxLDIpXSA8LSBjKHJlcCgwLCB0aW1lcz0yMyksIHJlcCgxLCB0aW1lcz0yMykpICMgYmluYXJ5IHZhcmlhYmxlcyBtaW4vbWF4DQoNCg0KdDFbYygyOjQsNjoxMSwxMzoyNyksM10gPC0gZm9ybWF0KHJvdW5kKHQxW2MoMjo0LDY6MTEsMTM6MjcpLDNdLDIpLCBuc21hbGw9MikgIyByb3VuZGluZyB0byAyIGRlY2ltYWxzDQp0MVsyNixjKDEsMiw0KV0gPC0gZm9ybWF0KHJvdW5kKHQxWzI2LGMoMSwyLDQpXSwyKSwgbnNtYWxsPTIpICMgcm91bmRpbmcNCg0KdDFbaXMubmEodDEpXSA8LSAiIg0KDQpgYGANCg0KDQpgYGB7cn0NCg0KdDEgJT4lDQogIGthYmxlKGZvcm1hdCA9ICdodG1sJywgY2FwdGlvbiA9ICc8Yj5UYWJsZSAxLjwvYj4gRGVzY3JpcHRpdmUgc3RhdGlzdGljcyBmb3IgYW5hbHlzZXMgYHN0YXJ0aW5nIHRvIHB1Ymxpc2hgIChOPTg1LDc4OCknLCBlc2NhcGU9RkFMU0UpICU+JQ0KICByb3dfc3BlYyhyb3c9MjgsIGl0YWxpYz1UKSAlPiUNCiAgcm93X3NwZWMocm93PWMoMSw1LDEyKSwgYm9sZD1UKSAlPiUNCiAga2FibGVfY2xhc3NpYyhmdWxsX3dpZHRoID0gRiwgaHRtbF9mb250ID0gIkNhbWJyaWEiKSAlPiUNCiAgYWRkX2luZGVudChjKDYsNywxMSksIGxldmVsX29mX2luZGVudD0xKSAlPiUNCiAgYWRkX2luZGVudChjKDgsOSwxMCksIGxldmVsX29mX2luZGVudD0yKSAlPiUNCiAga2FibGVfc3R5bGluZyhmb250X3NpemUgPSAxNCkgLT4gdGFibGUxDQoNCnRhYmxlMQ0KDQoNCmBgYA0KDQoNCg0KDQpgYGB7cn0NCg0KdDEgPC0gZGF0YS5mcmFtZShsYXBwbHkodDEsIGZ1bmN0aW9uKHgpew0KICBnc3ViKCJcXC4iLCAiLCIsIHgpDQp9KSkNCg0Kd3JpdGUuY3N2KHQxLCBmaWxlID0gIkM6Ly9ERFIvdGFiMS5jc3YiKQ0KDQpgYGANCg0KDQoNCi0tLS0tDQo=


Copyright © 2023