{"id":395,"date":"2021-09-21T21:49:48","date_gmt":"2021-09-21T19:49:48","guid":{"rendered":"http:\/\/jvdl.me\/wordpress\/?p=395"},"modified":"2021-09-21T22:03:40","modified_gmt":"2021-09-21T20:03:40","slug":"nonmem-dataset-example-free-with-r-code","status":"publish","type":"post","link":"https:\/\/jvdl.me\/blog\/?p=395","title":{"rendered":"NONMEM Dataset Example (free, with R code)"},"content":{"rendered":"\n<p>I&#8217;m making available here a basic NONMEM dataset example, along with the R code used to create it. Hopefully it will be helpful to someone in future!<\/p>\n\n\n\n<p>CSV download: <a href=\"http:\/\/jvdl.me\/downloads\/nonmem\/dummy_nonmem.csv\" data-type=\"URL\" data-id=\"http:\/\/jvdl.me\/downloads\/nonmem\/dummy_nonmem.csv\">http:\/\/jvdl.me\/downloads\/nonmem\/dummy_nonmem.csv<\/a><\/p>\n\n\n\n<p>XPT download: <a href=\"http:\/\/jvdl.me\/downloads\/nonmem\/dummy_nonmem.xpt\" data-type=\"URL\" data-id=\"http:\/\/jvdl.me\/downloads\/nonmem\/dummy_nonmem.xpt\">http:\/\/jvdl.me\/downloads\/nonmem\/dummy_nonmem.xpt<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"600\" src=\"http:\/\/jvdl.me\/wordpress\/wp-content\/uploads\/2021\/09\/nonmem_dummy.png\" alt=\"\" class=\"wp-image-401\"\/><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"R\" class=\"language-R line-numbers\">library(dplyr)\nlibrary(tidyverse)\n\nlibrary(linpk)\nlibrary(haven)\n\nrm(list = ls())\n\n# basic structure\nstdy &lt;- c(1, 2, 3)\nsex &lt;- c(0, 1)\nrace &lt;- c(1, 2, 3)\nntad &lt;- c(0, 0.5, 1, 2, 4, 8, 12, 16, 24, 48, 72)\n# end basic structure\n\n# create dummy foundation with random wt, ht, bmi, age\nfoundation &lt;- data.frame(stdy) %&gt;% \n    full_join(data.frame(sex), by = character()) %&gt;%\n    full_join(data.frame(race), by = character()) %&gt;%\n    mutate(\n        c = NA,\n        id = row_number(),\n        wt = runif(row_number(), 70, 100),\n        ht = runif(row_number(), 150, 200),\n        bmi = wt \/ ((ht \/ 100) ^ 2),\n        age = runif(row_number(), 30, 60)\n    ) %&gt;% \n    mutate_at(\n        vars(wt, ht, bmi), list(~ round(., 2))\n    ) %&gt;%\n    mutate_at(\n        vars(age), list(~ trunc(.))\n    ) %&gt;%\n    full_join(data.frame(ntad), by = character())\n\n# prepare pc\nfoundation.pc &lt;- foundation %&gt;%\n    mutate(\n        evid = 0L,\n        cmt = 2L,\n        mdv = 0, \n        amt = NA\n    )\n\n# prepare ex\nfoundation.ex &lt;- foundation %&gt;%\n    filter(ntad == 0) %&gt;%\n    mutate(\n        evid = 1L,\n        cmt = 1L,\n        addl = NA,\n        ii = NA, \n        mdv = 1,\n        amt = case_when(\n            stdy == 1 ~ 100L,\n            stdy == 2 ~ 200L,\n            stdy == 3 ~ 300L,\n            TRUE      ~ -99L\n        )\n    )\n\n# set pc and ex and locf amt as dose\nfoundation.nonmem &lt;- bind_rows(foundation.pc, foundation.ex) %&gt;%\n    arrange(stdy, id, ntad, evid) %&gt;%\n    mutate(\n        dose = amt,\n        tad = case_when(\n            ntad == 0 &amp; evid == 0 ~ -0.05,\n            TRUE                  ~ ntad\n        ),\n    ) %&gt;%\n    group_by(stdy, id) %&gt;%\n    tidyr::fill(dose, .direction = c(\"downup\")) %&gt;%\n    ungroup() \n\n# populate dummy concs with pklin::pkprofile\nfoundation.nonmem$dv = pkprofile(foundation.nonmem$tad, cl=0.5, vc=11, ka=1.3, dose = list(amt = foundation.nonmem$dose))\n\n#introduce some randomness to pk concs\nfoundation.nonmem &lt;- foundation.nonmem %&gt;%\n    mutate(\n        dv = as.numeric(dv) * runif(row_number(), 1.1, 1.25) * (dose \/ 100),\n        dv = ifelse(evid == 0, dv, NA), \n        lndv = case_when(\n            dv == 0 ~ 0,\n            TRUE    ~ log(dv)\n        )\n    ) %&gt;%\n    mutate_at(vars(dv, lndv), list(~ round(., digits = 2)))\n\n# housekeeping, replace NAs, column names to uppercase, etc.\nfoundation.nonmem.final &lt;- foundation.nonmem %&gt;% \n    mutate(\n        across(everything(), ~replace_na(.x, \".\"))\n    ) %&gt;%\n    select(c, stdy, id, tad, ntad, dose, amt, addl, ii, evid, cmt, dv, lndv, mdv, sex, race, age, wt, ht, bmi)\n\nnames(foundation.nonmem.final) &lt;- stringr::str_to_upper(names(foundation.nonmem.final))\n\n# export to csv and xpt\nsetwd(\"~\/R\")\nwrite_csv(foundation.nonmem.final, file = \"dummy_nonmem.csv\")\nwrite_xpt(foundation.nonmem.final, path = \"dummy_nonmem.xpt\", name = \"NM\", version = 5)<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>I&#8217;m making available here a basic NONMEM dataset example, along with the R code used to create it. Hopefully it will be helpful to someone in future! CSV download: http:\/\/jvdl.me\/downloads\/nonmem\/dummy_nonmem.csv XPT download: http:\/\/jvdl.me\/downloads\/nonmem\/dummy_nonmem.xpt<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[67,53,61],"tags":[70,72,71,69,68,64],"class_list":["post-395","post","type-post","status-publish","format-standard","hentry","category-pharma","category-programming","category-r","tag-dataset","tag-example","tag-free","tag-nonmem","tag-pharma","tag-r"],"_links":{"self":[{"href":"https:\/\/jvdl.me\/blog\/index.php?rest_route=\/wp\/v2\/posts\/395","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jvdl.me\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jvdl.me\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jvdl.me\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jvdl.me\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=395"}],"version-history":[{"count":7,"href":"https:\/\/jvdl.me\/blog\/index.php?rest_route=\/wp\/v2\/posts\/395\/revisions"}],"predecessor-version":[{"id":404,"href":"https:\/\/jvdl.me\/blog\/index.php?rest_route=\/wp\/v2\/posts\/395\/revisions\/404"}],"wp:attachment":[{"href":"https:\/\/jvdl.me\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=395"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jvdl.me\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=395"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jvdl.me\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=395"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}