{"id":23712,"date":"2022-11-28T00:08:33","date_gmt":"2022-11-27T18:38:33","guid":{"rendered":"https:\/\/jassweb.com\/solved\/solved-working-for-single-input-row-but-not-for-multiple\/"},"modified":"2022-11-28T00:08:33","modified_gmt":"2022-11-27T18:38:33","slug":"solved-working-for-single-input-row-but-not-for-multiple","status":"publish","type":"post","link":"https:\/\/jassweb.com\/solved\/solved-working-for-single-input-row-but-not-for-multiple\/","title":{"rendered":"[Solved] Working for single input row but not for multiple"},"content":{"rendered":"<p> [ad_1]<br \/>\n<\/p>\n<div id=\"answer-56895619\" class=\"answer js-answer accepted-answer js-accepted-answer\" data-answerid=\"56895619\" data-parentid=\"56892037\" data-score=\"0\" data-position-on-page=\"1\" data-highest-scored=\"1\" data-question-has-accepted-highest-score=\"1\" itemprop=\"acceptedAnswer\" itemscope itemtype=\"https:\/\/schema.org\/Answer\">\n<div class=\"post-layout\">\n<div class=\"votecell post-layout--left\"><\/div>\n<div class=\"answercell post-layout--right\">\n<div class=\"s-prose js-post-body\" itemprop=\"text\">\n<p>Here you go. I acknowledge you specified a loop in your question, but in R I avoid loops wherever possible. This is better.<\/p>\n<p>This uses <code>plyr::join_all<\/code> to join all your data frames by Item and LC, then <code>dplyr::mutate<\/code> to do the calculations. Note you can put multiple mutations in one <code>mutate()<\/code> function:<\/p>\n<pre><code>library(plyr)\nlibrary(dplyr)\nlibrary(tidyr)\n\njoin_all(list(gather(df1, key = LC_ref, value = LC, - Item), df2, df3, df4),\n         by = c(\"Item\", \"LC\"),\n         type = \"left\") %&gt;%\n  as_tibble() %&gt;%\n  rename(\"SS\" = \"Safetystock.SS.\") %&gt;%\n  mutate(xprcnt= X * SS,\n         remainingss= SS - xprcnt,\n         prcntvalue = custfcst  \/ (custfcst + Rolledfcst),\n         share = prcntvalue * remainingss,\n         SSNew = xprcnt + share,\n         Leftover = SS - SSNew) %&gt;%\n  arrange(Item, LC_ref) %&gt;%\n  group_by(Item) %&gt;%\n  mutate(lag = lag(Leftover, 1) + SS)\n\n# A tibble: 6 x 15\n# Groups:   Item [2]\n  Item   LC_ref LC    custfcst ToLC  Rolledfcst    SS     X xprcnt remainingss prcntvalue share SSNew Leftover   lag\n  &lt;chr&gt;  &lt;chr&gt;  &lt;chr&gt;    &lt;int&gt; &lt;chr&gt;      &lt;int&gt; &lt;int&gt; &lt;dbl&gt;  &lt;dbl&gt;       &lt;dbl&gt;      &lt;dbl&gt; &lt;dbl&gt; &lt;dbl&gt;    &lt;dbl&gt; &lt;dbl&gt;\n1 8T4121 LC1    MW92        10 OY01          22    15  0.25   3.75       11.2       0.312  3.52  7.27     7.73 NA   \n2 8T4121 LC2    OY01        12 RM11          10     7  0.25   1.75        5.25      0.545  2.86  4.61     2.39 14.7 \n3 8T4121 LC3    RM11        10 NA            NA     5  0.25   1.25        3.75     NA     NA    NA       NA     7.39\n4 AB7654 LC1    MW92        NA NA            NA    30  0.25   7.5        22.5      NA     NA    NA       NA    NA   \n5 AB7654 LC2    WK14        NA NA            NA     8  0.25   2           6        NA     NA    NA       NA    NA   \n6 AB7654 LC3    RM11        NA NA            NA    20  0.25   5          15        NA     NA    NA       NA    NA   \n\n&gt; select(.Last.value, -LC_ref, -(custfcst:X))\n# A tibble: 6 x 9\n# Groups:   Item [2]\n  Item   LC    xprcnt remainingss prcntvalue share SSNew Leftover   lag\n  &lt;chr&gt;  &lt;chr&gt;  &lt;dbl&gt;       &lt;dbl&gt;      &lt;dbl&gt; &lt;dbl&gt; &lt;dbl&gt;    &lt;dbl&gt; &lt;dbl&gt;\n1 8T4121 MW92    3.75       11.2       0.312  3.52  7.27     7.73 NA   \n2 8T4121 OY01    1.75        5.25      0.545  2.86  4.61     2.39 14.7 \n3 8T4121 RM11    1.25        3.75     NA     NA    NA       NA     7.39\n4 AB7654 MW92    7.5        22.5      NA     NA    NA       NA    NA   \n5 AB7654 WK14    2           6        NA     NA    NA       NA    NA   \n6 AB7654 RM11    5          15        NA     NA    NA       NA    NA   \n<\/code><\/pre>\n<p>(Also note that <code>dplyr<\/code> and <code>plyr<\/code> have a few functions of matching names, I find it usually works best to load <code>plyr<\/code> first in your library statements).<\/p>\n<\/p><\/div>\n<div class=\"mt24\"><\/div>\n<\/div>\n<p>            <span class=\"d-none\" itemprop=\"commentCount\"><\/span> <\/p><\/div>\n<\/div>\n<p>[ad_2]<\/p>\n<p>solved Working for single input row but not for multiple <\/p>\n","protected":false},"excerpt":{"rendered":"<p>[ad_1] Here you go. I acknowledge you specified a loop in your question, but in R I avoid loops wherever possible. This is better. This uses plyr::join_all to join all your data frames by Item and LC, then dplyr::mutate to do the calculations. Note you can put multiple mutations in one mutate() function: library(plyr) library(dplyr) &#8230; <a title=\"[Solved] Working for single input row but not for multiple\" class=\"read-more\" href=\"https:\/\/jassweb.com\/solved\/solved-working-for-single-input-row-but-not-for-multiple\/\" aria-label=\"More on [Solved] Working for single input row but not for multiple\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[320],"tags":[1256,321,940],"class_list":["post-23712","post","type-post","status-publish","format-standard","hentry","category-solved","tag-dplyr","tag-r","tag-tidyr"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>[Solved] Working for single input row but not for multiple - JassWeb<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/jassweb.com\/solved\/solved-working-for-single-input-row-but-not-for-multiple\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"[Solved] Working for single input row but not for multiple - JassWeb\" \/>\n<meta property=\"og:description\" content=\"[ad_1] Here you go. I acknowledge you specified a loop in your question, but in R I avoid loops wherever possible. This is better. This uses plyr::join_all to join all your data frames by Item and LC, then dplyr::mutate to do the calculations. Note you can put multiple mutations in one mutate() function: library(plyr) library(dplyr) ... Read more\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jassweb.com\/solved\/solved-working-for-single-input-row-but-not-for-multiple\/\" \/>\n<meta property=\"og:site_name\" content=\"JassWeb\" \/>\n<meta property=\"article:published_time\" content=\"2022-11-27T18:38:33+00:00\" \/>\n<meta name=\"author\" content=\"Kirat\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kirat\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-working-for-single-input-row-but-not-for-multiple\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-working-for-single-input-row-but-not-for-multiple\/\"},\"author\":{\"name\":\"Kirat\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\"},\"headline\":\"[Solved] Working for single input row but not for multiple\",\"datePublished\":\"2022-11-27T18:38:33+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-working-for-single-input-row-but-not-for-multiple\/\"},\"wordCount\":95,\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"keywords\":[\"dplyr\",\"r\",\"tidyr\"],\"articleSection\":[\"Solved\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-working-for-single-input-row-but-not-for-multiple\/\",\"url\":\"https:\/\/jassweb.com\/solved\/solved-working-for-single-input-row-but-not-for-multiple\/\",\"name\":\"[Solved] Working for single input row but not for multiple - JassWeb\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#website\"},\"datePublished\":\"2022-11-27T18:38:33+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-working-for-single-input-row-but-not-for-multiple\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/jassweb.com\/solved\/solved-working-for-single-input-row-but-not-for-multiple\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-working-for-single-input-row-but-not-for-multiple\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/jassweb.com\/solved\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"[Solved] Working for single input row but not for multiple\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/jassweb.com\/solved\/#website\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"name\":\"JassWeb\",\"description\":\"Build High-quality Websites\",\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/jassweb.com\/solved\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\",\"name\":\"Jass Web\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"contentUrl\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"width\":693,\"height\":132,\"caption\":\"Jass Web\"},\"image\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\",\"name\":\"Kirat\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1776403586\",\"contentUrl\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1776403586\",\"caption\":\"Kirat\"},\"sameAs\":[\"http:\/\/jassweb.com\"],\"url\":\"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"[Solved] Working for single input row but not for multiple - JassWeb","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/jassweb.com\/solved\/solved-working-for-single-input-row-but-not-for-multiple\/","og_locale":"en_US","og_type":"article","og_title":"[Solved] Working for single input row but not for multiple - JassWeb","og_description":"[ad_1] Here you go. I acknowledge you specified a loop in your question, but in R I avoid loops wherever possible. This is better. This uses plyr::join_all to join all your data frames by Item and LC, then dplyr::mutate to do the calculations. Note you can put multiple mutations in one mutate() function: library(plyr) library(dplyr) ... Read more","og_url":"https:\/\/jassweb.com\/solved\/solved-working-for-single-input-row-but-not-for-multiple\/","og_site_name":"JassWeb","article_published_time":"2022-11-27T18:38:33+00:00","author":"Kirat","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Kirat","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/jassweb.com\/solved\/solved-working-for-single-input-row-but-not-for-multiple\/#article","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/solved-working-for-single-input-row-but-not-for-multiple\/"},"author":{"name":"Kirat","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31"},"headline":"[Solved] Working for single input row but not for multiple","datePublished":"2022-11-27T18:38:33+00:00","mainEntityOfPage":{"@id":"https:\/\/jassweb.com\/solved\/solved-working-for-single-input-row-but-not-for-multiple\/"},"wordCount":95,"publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"keywords":["dplyr","r","tidyr"],"articleSection":["Solved"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/jassweb.com\/solved\/solved-working-for-single-input-row-but-not-for-multiple\/","url":"https:\/\/jassweb.com\/solved\/solved-working-for-single-input-row-but-not-for-multiple\/","name":"[Solved] Working for single input row but not for multiple - JassWeb","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/#website"},"datePublished":"2022-11-27T18:38:33+00:00","breadcrumb":{"@id":"https:\/\/jassweb.com\/solved\/solved-working-for-single-input-row-but-not-for-multiple\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jassweb.com\/solved\/solved-working-for-single-input-row-but-not-for-multiple\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/jassweb.com\/solved\/solved-working-for-single-input-row-but-not-for-multiple\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/jassweb.com\/solved\/"},{"@type":"ListItem","position":2,"name":"[Solved] Working for single input row but not for multiple"}]},{"@type":"WebSite","@id":"https:\/\/jassweb.com\/solved\/#website","url":"https:\/\/jassweb.com\/solved\/","name":"JassWeb","description":"Build High-quality Websites","publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/jassweb.com\/solved\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/jassweb.com\/solved\/#organization","name":"Jass Web","url":"https:\/\/jassweb.com\/solved\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/","url":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","contentUrl":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","width":693,"height":132,"caption":"Jass Web"},"image":{"@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31","name":"Kirat","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/","url":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1776403586","contentUrl":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1776403586","caption":"Kirat"},"sameAs":["http:\/\/jassweb.com"],"url":"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/"}]}},"_links":{"self":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/23712","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/comments?post=23712"}],"version-history":[{"count":0,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/23712\/revisions"}],"wp:attachment":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/media?parent=23712"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/categories?post=23712"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/tags?post=23712"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}