This example shows how to use the kth_school_dep() function to enumerate some organizational unit "slugs".

For these slugs, associated KTH employees with the word "HEAD" in their titles are listed.

This creates a list of potentially responsible heads for this set of organizational units at KTH.

For most units there are several potential matches.

library(kthapi)
library(dplyr)
library(stringr)
library(purrr)
#> 
#> Attaching package: 'purrr'
#> The following object is masked from 'package:kthapi':
#> 
#>     flatten
#> The following object is masked from 'package:testthat':
#> 
#>     is_null
library(tibble)

# some slugs of relevance
slugs <- 
  kth_school_dep() %>% 
  # we look for schools (ie slugs containing a slash character)
  mutate(is_dep = stringr::str_detect(slug, "/")) %>% 
  # we exclude t, vg, zaa and m/m slugs ()
  mutate(is_excluded = stringr::str_detect(slug, "t/|vg/|zaa/|m/m")) %>%
  # retain just the deps and non-excluded slugs
  filter(is_dep, !is_excluded) %>% 
  pull(slug)

slugs <- setNames(nm = slugs)

# a function to flag potential heads (containing the word HEAD in the english descr)
dep_heads <- function(slug)
  kth_catalog(slug = slug)$users %>% 
  mutate(is_head = grepl("HEAD", `title.en`)) %>%
  filter(is_head)

# iterate over all slugs to locate potential heads
potential_heads <- 
  slugs %>% purrr::map_dfr(dep_heads, .id = "slug")

# display some of the results
display <- 
  potential_heads %>% 
  select(slug, username, title = `title.en`) %>%
  inner_join(kth_school_dep()) %>%
  select(slug, slug_id = kthid, desc = `description.en`, username, title)
#> Joining, by = "slug"

display <- 
  display %>% 
  slice(sample(nrow(display), size = 5))

knitr::kable(display)

|slug |slug_id |desc |username |title | |:-----|:--------|:--------------------------------------------------------------|:--------|:------------------------------| |j/jr |u22y13wv |DEPARTMENT OF INTELLIGENT SYSTEMS |mikaelj |PROF., DEPUTY HEAD OF DIVISION | |c/cg |u2hmae9o |DEPARTMENT OF FIBRE AND POLYMER TECHNOLOGY |monicaek |PROFESSOR, HEAD OF DIVISION | |a/al |u23cj6w6 |SUSTAINABLE DEVELOPMENT, ENVIRONMENTAL SCIENCE AND ENGINEERING |malmstro |HEAD OF DEPARTMENT, ASSOC.PROF | |j/jj |u24u5kih |DEPARTMENT OF ELECTRICAL ENERGY ENGINEERING |mnorgren |PROFESSOR, HEAD OF DIVISION | |a/aab |u2zd9bd6 |SCHOOLS OFFICE OF STUDENT AFFAIRS ABE |tiinav |HEAD OF STUDENT COUNSELOR |

# for each potential head, additional info can be looked up, like this:
kth_profile_legacy(display$username[1])$content %>% 
  select(url, worksfor = `worksFor.url`) %>%
  glimpse()
#> Rows: 1
#> Columns: 2
#> $ url      <chr> "https://www.kth.se/profile/mikaelj"
#> $ worksfor <chr> "https://www.kth.se/directory/j/jr/jrl"

Division level data

What divisions (KTH -> School -> Department (sv: Institution) -> Division (sv: Avdelning)) are there?

# get some relevant schools and departments
ksd <- 
  kth_school_dep()  %>% 
  mutate(is_excluded = ifelse(nchar(stringr::str_match(slug, "t|vg|zaa")) > 0, TRUE, FALSE)) %>%
  # retain just the deps and non-excluded slugs
  filter(is.na(is_excluded)) %>% 
  arrange(-desc(slug)) %>% 
  select(slug, desc = `description.en`)

knitr::kable(ksd %>% slice(1:5))

|slug |desc | |:-----|:------------------------------------------------| |a |SCHOOL OF ARCHITECTURE AND THE BUILT ENVIRONMENT | |a/aaa |SCHOOLS OFFICE | |a/aab |SCHOOLS OFFICE OF STUDENT AFFAIRS ABE | |a/abe |ABE SKOLAN | |a/acp |VIABLE CITIES |

# use one of the slugs

ai <- 
  kth_catalog(slug = "a/ai")

# users can now be enumerated, for example:
#knitr::kable(ai$users %>% slice(1:5))

# divisions can be enumerated for each of the departments, for example:

ai$catalog %>% 
  select(slug, `description.en`, kthid) %>%
  knitr::kable()

|slug |description.en |kthid | |:--------|:------------------------------------------------------|:--------| |a/ai/aia |DIVISION OF REAL ESTATE AND CONSTRUCTION MANAGEMENT |u2n3dep0 | |a/ai/aib |DIVISION OF REAL ESTATE ECONOMICS AND FINANCE |u2vce7hj | |a/ai/aic |DIVISION OF REAL ESTATE PLANNING AND LAND LAW |u2yhezo5 | |a/ai/aid |DIVISION OF CONSTRUCTION AND FACILITIES MANAGEMENT |u2ctw8g8 | |a/ai/aie |DIVISION OF REAL ESTATE BUSINESS AND FINANCIAL SYSTEMS |u21evul2 | |a/ai/aig |DIVISION OF GEODESY AND SATELLITE POSITIONING |u21ttfwm |



KTH-Library/kthapi documentation built on June 27, 2023, 9:27 p.m.