{"id":89,"date":"2018-07-26T14:05:08","date_gmt":"2018-07-26T05:05:08","guid":{"rendered":"http:\/\/jazzman.pe.kr\/blog\/?p=89"},"modified":"2026-02-14T12:43:33","modified_gmt":"2026-02-14T03:43:33","slug":"r-useful-functions","status":"publish","type":"post","link":"https:\/\/jazzman.pe.kr\/blog\/index.php\/2018\/07\/26\/89\/","title":{"rendered":"[R] useful functions"},"content":{"rendered":"\n<p>\uba87\uac00\uc9c0 \uc190\uc218 \ub9cc\ub4e0 R function \ub4e4\uc778\ub370 \uc870\uc7a1\ud558\uc9c0\ub9cc \ub098\ub984 \ud3b8\ub9ac\ud558\uac8c \uc774\uc6a9\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p>extr.num \uc740 \ub370\uc774\ud130 cleaning \ud560 \ub54c outlier \ub4e4\uc744 \ubcf4\ub294 \ub370 \uc720\uc6a9\ud558\uace0, qw \ub294 perl \uc5d0\uc11c \uc4f0\ub294 \ud568\uc218 \uba85\uc744 \uadf8\ub300\ub85c \ub530\uc654\ub294\ub370 \uc815\ud655\ud788 \ub611\uac19\uc9c4 \uc54a\uc9c0\ub9cc \uc5ec\ub7ec text \ub4e4\uc744 \ud558\ub098\uc758 vector \ub85c \ubb36\uc744 \ub54c \ud3b8\ud569\ub2c8\ub2e4. \uc548 \uadf8\ub7ec\uba74 \ub530\uc634\ud45c\ub791 \uc27c\ud45c \ucc0d\ub290\ub77c\uace0 \ubb34\uc9c0 \ubc88\uac70\ub86d\uc8e0.<\/p>\n\n\n\n<p>\uadf8 \uc911 logistic() \uac19\uc740 \uac83\uc740 \uc368\ubcf4\uba74 \uc81c\ubc95 \ud3b8\ub9ac\ud560 \uac81\ub2c8\ub2e4. R \uc5d0\uc11c logistic regression \uc744 \ud558\ub824\uba74 \ubcf4\uc2dc\ub294 \ubc14\uc640 \uac19\uc774 glm (&#8230;) \uc73c\ub85c \ud55c\ucc38 \uae38\uac8c \uc368\uc57c \ud558\ub294 \ubc88\uac70\ub85c\uc6c0\uc5d0\ub2e4\uac00, \uc6b0\uc120 \ubcf4\uace0 \uc2f6\uc740 \uac8c odds ratio \uc778\ub370 \uadf8\uac78 \uc548\ubcf4\uc5ec\uc900\ub2e4\ub294&#8230;! \uc5b4\uca4c\uc790\uace0 \uc774\ub9ac \ub9cc\ub4e4\uc5b4 \ub1a8\ub294\uc9c0\ub294 \ubaa8\ub974\uaca0\uc9c0\ub9cc&#8230; logistic \uc740 \uc81c\uac00 \ub370\uc774\ud130 \ubd84\uc11d\ud560 \ub54c logistic regression \ud560 \ub54c\ub9c8\ub2e4 \uc0ac\uc6a9\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:clamp(14px, .875rem, 21px);font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\n# Useful home-made functions\n## function for listing minimum and maximum 10 numbers\nextr.num &lt;- function(x) {\n    tmp &lt;- cbind(x[order(x)&#91;1:10&#93;], x[order(x, decreasing=TRUE)&#91;1:10&#93;])\n    extr.numbers &lt;- matrix(tmp, ncol=2)\n    colnames(extr.numbers) &lt;- c(\"Minimum\", \"Maximum\")\n    extr.numbers\n}\n\n## frontend for logistic regression\nlogistic &lt;- function(model, df) {\n    x &lt;- glm(model, family=binomial(logit), data=df)\n    result &lt;- summary(x)\n    or &lt;- exp(cbind(OR = x$coefficients, confint.default(x)))\n    return(list(\"Logistic regression:\" = result, \"OR (95% CI)\" = or))\n}\n\n# make vector of strings: equivalent of Perl qw()\nqw &lt;- function(x){\n    unlist(strsplit(x, split = \"(,|\\\\s)+\"))\n}\n\nqw_n &lt;- function(x){\n    unlist(strsplit(x, split = \"\\\\n {2,}\"))\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\"># <\/span><span style=\"color: #D8DEE9\">Useful<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">home<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">made<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">functions<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">## <\/span><span style=\"color: #81A1C1\">function<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">for<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">listing<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">minimum<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">and<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">maximum<\/span><span style=\"color: #D8DEE9FF\"> 10 <\/span><span style=\"color: #88C0D0\">numbers<\/span><\/span>\n<span class=\"line\"><span style=\"color: #88C0D0\">extr<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #88C0D0\">num<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&lt;<\/span><span style=\"color: #D8DEE9FF\">- function(x) <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    tmp <\/span><span style=\"color: #ECEFF4\">&lt;<\/span><span style=\"color: #D8DEE9FF\">- cbind(x[order(x)&#91;<\/span><span style=\"color: #B48EAD\">1<\/span><span style=\"color: #81A1C1\">:<\/span><span style=\"color: #B48EAD\">10<\/span><span style=\"color: #D8DEE9FF\">&#93;]<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> x[order<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">x<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">decreasing<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9\">TRUE<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\">&#91;<\/span><span style=\"color: #B48EAD\">1<\/span><span style=\"color: #81A1C1\">:<\/span><span style=\"color: #B48EAD\">10<\/span><span style=\"color: #D8DEE9FF\">&#93;])<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    extr<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">numbers <\/span><span style=\"color: #ECEFF4\">&lt;<\/span><span style=\"color: #D8DEE9FF\">- matrix<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">tmp<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">ncol<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #B48EAD\">2<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    colnames(extr<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">numbers) <\/span><span style=\"color: #ECEFF4\">&lt;<\/span><span style=\"color: #D8DEE9FF\">- c(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">Minimum<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">Maximum<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    extr<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">numbers<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">## frontend for logistic regression<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">logistic <\/span><span style=\"color: #ECEFF4\">&lt;<\/span><span style=\"color: #D8DEE9FF\">- function<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">model<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">df<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    x <\/span><span style=\"color: #ECEFF4\">&lt;<\/span><span style=\"color: #D8DEE9FF\">- glm<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">model<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">family<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #88C0D0\">binomial<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #D8DEE9\">logit<\/span><span style=\"color: #D8DEE9FF\">)<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">data<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9\">df<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    result <\/span><span style=\"color: #ECEFF4\">&lt;<\/span><span style=\"color: #D8DEE9FF\">- summary(x)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    or <\/span><span style=\"color: #ECEFF4\">&lt;<\/span><span style=\"color: #D8DEE9FF\">- exp(cbind<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">OR<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">x$coefficients<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> confint.default(<\/span><span style=\"color: #D8DEE9\">x<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\">))<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    return(list(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">Logistic regression:<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9FF\"> = result<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">OR (95% CI)<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9FF\"> = or))<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\"># make vector of strings<\/span><span style=\"color: #81A1C1\">:<\/span><span style=\"color: #D8DEE9FF\"> equivalent of Perl qw<\/span><span style=\"color: #ECEFF4\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">qw <\/span><span style=\"color: #ECEFF4\">&lt;<\/span><span style=\"color: #D8DEE9FF\">- function(x)<\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #88C0D0\">unlist<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">strsplit<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #D8DEE9\">x<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">split<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">(,|<\/span><span style=\"color: #EBCB8B\">\\\\<\/span><span style=\"color: #A3BE8C\">s)+<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">qw_n <\/span><span style=\"color: #ECEFF4\">&lt;<\/span><span style=\"color: #D8DEE9FF\">- function(x)<\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #88C0D0\">unlist<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">strsplit<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #D8DEE9\">x<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">split<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #EBCB8B\">\\\\<\/span><span style=\"color: #A3BE8C\">n {2,}<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\uba87\uac00\uc9c0 \uc190\uc218 \ub9cc\ub4e0 R function \ub4e4\uc778\ub370 \uc870\uc7a1\ud558\uc9c0\ub9cc \ub098\ub984 \ud3b8\ub9ac\ud558\uac8c \uc774\uc6a9\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. extr.num \uc740 \ub370\uc774\ud130 cleaning \ud560 \ub54c outlier \ub4e4\uc744 \ubcf4\ub294 \ub370 \uc720\uc6a9\ud558\uace0, qw \ub294 perl \uc5d0\uc11c \uc4f0\ub294 \ud568\uc218 \uba85\uc744 \uadf8\ub300\ub85c \ub530\uc654\ub294\ub370 \uc815\ud655\ud788 \ub611\uac19\uc9c4 \uc54a\uc9c0\ub9cc \uc5ec\ub7ec text \ub4e4\uc744 \ud558\ub098\uc758 vector \ub85c \ubb36\uc744 \ub54c \ud3b8\ud569\ub2c8\ub2e4. \uc548 \uadf8\ub7ec\uba74 \ub530\uc634\ud45c\ub791 \uc27c\ud45c \ucc0d\ub290\ub77c\uace0 \ubb34\uc9c0 \ubc88\uac70\ub86d\uc8e0. \uadf8 \uc911 logistic() \uac19\uc740 \uac83\uc740 \uc368\ubcf4\uba74 \uc81c\ubc95 \ud3b8\ub9ac\ud560 \uac81\ub2c8\ub2e4. R \uc5d0\uc11c logistic regression \uc744 \ud558\ub824\uba74 \ubcf4\uc2dc\ub294 \ubc14\uc640 \uac19\uc774 glm (&#8230;) \uc73c\ub85c \ud55c\ucc38 \uae38\uac8c \uc368\uc57c \ud558\ub294 \ubc88\uac70\ub85c\uc6c0\uc5d0\ub2e4\uac00, \uc6b0\uc120 \ubcf4\uace0 \uc2f6\uc740 \uac8c odds ratio \uc778\ub370 \uadf8\uac78 \uc548\ubcf4\uc5ec\uc900\ub2e4\ub294&#8230;! \uc5b4\uca4c\uc790\uace0 \uc774\ub9ac \ub9cc\ub4e4\uc5b4 \ub1a8\ub294\uc9c0\ub294 \ubaa8\ub974\uaca0\uc9c0\ub9cc&#8230; logistic \uc740 \uc81c\uac00 \ub370\uc774\ud130 \ubd84\uc11d\ud560 \ub54c logistic regression \ud560 \ub54c\ub9c8\ub2e4<\/p>\n","protected":false},"author":1,"featured_media":1165,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[17,3],"tags":[13,20],"class_list":["post-89","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-biostatistics","category-research","tag-r","tag-statistics"],"views":1756,"_links":{"self":[{"href":"https:\/\/jazzman.pe.kr\/blog\/index.php\/wp-json\/wp\/v2\/posts\/89","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jazzman.pe.kr\/blog\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jazzman.pe.kr\/blog\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jazzman.pe.kr\/blog\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jazzman.pe.kr\/blog\/index.php\/wp-json\/wp\/v2\/comments?post=89"}],"version-history":[{"count":4,"href":"https:\/\/jazzman.pe.kr\/blog\/index.php\/wp-json\/wp\/v2\/posts\/89\/revisions"}],"predecessor-version":[{"id":1183,"href":"https:\/\/jazzman.pe.kr\/blog\/index.php\/wp-json\/wp\/v2\/posts\/89\/revisions\/1183"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/jazzman.pe.kr\/blog\/index.php\/wp-json\/wp\/v2\/media\/1165"}],"wp:attachment":[{"href":"https:\/\/jazzman.pe.kr\/blog\/index.php\/wp-json\/wp\/v2\/media?parent=89"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jazzman.pe.kr\/blog\/index.php\/wp-json\/wp\/v2\/categories?post=89"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jazzman.pe.kr\/blog\/index.php\/wp-json\/wp\/v2\/tags?post=89"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}