Running predictive model according to values in column





.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}







0















I have a dataframe (I might in future not use it):



> PM
names.model.
1 4
2 5
3 6
4 8
5 9


It means that for value of 4 for instance I'll use model[1], for value of 5 I'll use model[2] etc.
As already mentioned I have a list of model (from 1 to 5).
I have another dataframe, that has a column TN.
As can be seen:



> head (test)
Ozone Solar.R Wind Temp Month Day TN
2 36 118 8.0 72 5 2 4
8 19 99 13.8 59 5 8 4
14 14 274 10.9 68 5 14 5
40 71 291 13.8 90 6 9 9
62 135 269 4.1 84 7 1 8
69 97 267 6.3 92 7 8 9


I would like to run the add a new column test$Ozone_pred that will run the relevant model per line. For instance, for the first line I'll run model[1] as well as for the second line (both are 4). For the third line I'll run model[2] , for the forth line model[5] etc.










share|improve this question

























  • Hard to replicate your data like that.

    – Bram
    Nov 23 '18 at 13:46


















0















I have a dataframe (I might in future not use it):



> PM
names.model.
1 4
2 5
3 6
4 8
5 9


It means that for value of 4 for instance I'll use model[1], for value of 5 I'll use model[2] etc.
As already mentioned I have a list of model (from 1 to 5).
I have another dataframe, that has a column TN.
As can be seen:



> head (test)
Ozone Solar.R Wind Temp Month Day TN
2 36 118 8.0 72 5 2 4
8 19 99 13.8 59 5 8 4
14 14 274 10.9 68 5 14 5
40 71 291 13.8 90 6 9 9
62 135 269 4.1 84 7 1 8
69 97 267 6.3 92 7 8 9


I would like to run the add a new column test$Ozone_pred that will run the relevant model per line. For instance, for the first line I'll run model[1] as well as for the second line (both are 4). For the third line I'll run model[2] , for the forth line model[5] etc.










share|improve this question

























  • Hard to replicate your data like that.

    – Bram
    Nov 23 '18 at 13:46














0












0








0








I have a dataframe (I might in future not use it):



> PM
names.model.
1 4
2 5
3 6
4 8
5 9


It means that for value of 4 for instance I'll use model[1], for value of 5 I'll use model[2] etc.
As already mentioned I have a list of model (from 1 to 5).
I have another dataframe, that has a column TN.
As can be seen:



> head (test)
Ozone Solar.R Wind Temp Month Day TN
2 36 118 8.0 72 5 2 4
8 19 99 13.8 59 5 8 4
14 14 274 10.9 68 5 14 5
40 71 291 13.8 90 6 9 9
62 135 269 4.1 84 7 1 8
69 97 267 6.3 92 7 8 9


I would like to run the add a new column test$Ozone_pred that will run the relevant model per line. For instance, for the first line I'll run model[1] as well as for the second line (both are 4). For the third line I'll run model[2] , for the forth line model[5] etc.










share|improve this question
















I have a dataframe (I might in future not use it):



> PM
names.model.
1 4
2 5
3 6
4 8
5 9


It means that for value of 4 for instance I'll use model[1], for value of 5 I'll use model[2] etc.
As already mentioned I have a list of model (from 1 to 5).
I have another dataframe, that has a column TN.
As can be seen:



> head (test)
Ozone Solar.R Wind Temp Month Day TN
2 36 118 8.0 72 5 2 4
8 19 99 13.8 59 5 8 4
14 14 274 10.9 68 5 14 5
40 71 291 13.8 90 6 9 9
62 135 269 4.1 84 7 1 8
69 97 267 6.3 92 7 8 9


I would like to run the add a new column test$Ozone_pred that will run the relevant model per line. For instance, for the first line I'll run model[1] as well as for the second line (both are 4). For the third line I'll run model[2] , for the forth line model[5] etc.







r dataframe prediction






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 23 '18 at 13:41







Avi

















asked Nov 23 '18 at 13:30









AviAvi

1,0311734




1,0311734













  • Hard to replicate your data like that.

    – Bram
    Nov 23 '18 at 13:46



















  • Hard to replicate your data like that.

    – Bram
    Nov 23 '18 at 13:46

















Hard to replicate your data like that.

– Bram
Nov 23 '18 at 13:46





Hard to replicate your data like that.

– Bram
Nov 23 '18 at 13:46












1 Answer
1






active

oldest

votes


















0














There are a couple options. First would be to use dplyr's join function to just add your first dataframe (PM) to the second one (test) as a new column and then index based on that. Below is a solution with base R.



To get the correct function for a single row as your current PM is:



model[match(test_TN_number, PM[,2])]


If PM doesn't have the first column equal to row numbers, then:



model[PM[match(test_TN_number, PM[,2])],1]


This is then easily extended to the whole dataframe with apply or within a loop.



Edit: here's a for looped version:



for (test_TN_number in test[,"TN"]){
model[PM[match(test_TN_number, PM[,2])],1]
}





share|improve this answer


























  • Thanks @Aaro Viertiö, Can you add the apply for the whole dataframe (or loop).

    – Avi
    Nov 23 '18 at 13:59











  • Added a looped version.

    – Aaro Viertiö
    Nov 23 '18 at 14:11












Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53447642%2frunning-predictive-model-according-to-values-in-column%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























1 Answer
1






active

oldest

votes








1 Answer
1






active

oldest

votes









active

oldest

votes






active

oldest

votes









0














There are a couple options. First would be to use dplyr's join function to just add your first dataframe (PM) to the second one (test) as a new column and then index based on that. Below is a solution with base R.



To get the correct function for a single row as your current PM is:



model[match(test_TN_number, PM[,2])]


If PM doesn't have the first column equal to row numbers, then:



model[PM[match(test_TN_number, PM[,2])],1]


This is then easily extended to the whole dataframe with apply or within a loop.



Edit: here's a for looped version:



for (test_TN_number in test[,"TN"]){
model[PM[match(test_TN_number, PM[,2])],1]
}





share|improve this answer


























  • Thanks @Aaro Viertiö, Can you add the apply for the whole dataframe (or loop).

    – Avi
    Nov 23 '18 at 13:59











  • Added a looped version.

    – Aaro Viertiö
    Nov 23 '18 at 14:11
















0














There are a couple options. First would be to use dplyr's join function to just add your first dataframe (PM) to the second one (test) as a new column and then index based on that. Below is a solution with base R.



To get the correct function for a single row as your current PM is:



model[match(test_TN_number, PM[,2])]


If PM doesn't have the first column equal to row numbers, then:



model[PM[match(test_TN_number, PM[,2])],1]


This is then easily extended to the whole dataframe with apply or within a loop.



Edit: here's a for looped version:



for (test_TN_number in test[,"TN"]){
model[PM[match(test_TN_number, PM[,2])],1]
}





share|improve this answer


























  • Thanks @Aaro Viertiö, Can you add the apply for the whole dataframe (or loop).

    – Avi
    Nov 23 '18 at 13:59











  • Added a looped version.

    – Aaro Viertiö
    Nov 23 '18 at 14:11














0












0








0







There are a couple options. First would be to use dplyr's join function to just add your first dataframe (PM) to the second one (test) as a new column and then index based on that. Below is a solution with base R.



To get the correct function for a single row as your current PM is:



model[match(test_TN_number, PM[,2])]


If PM doesn't have the first column equal to row numbers, then:



model[PM[match(test_TN_number, PM[,2])],1]


This is then easily extended to the whole dataframe with apply or within a loop.



Edit: here's a for looped version:



for (test_TN_number in test[,"TN"]){
model[PM[match(test_TN_number, PM[,2])],1]
}





share|improve this answer















There are a couple options. First would be to use dplyr's join function to just add your first dataframe (PM) to the second one (test) as a new column and then index based on that. Below is a solution with base R.



To get the correct function for a single row as your current PM is:



model[match(test_TN_number, PM[,2])]


If PM doesn't have the first column equal to row numbers, then:



model[PM[match(test_TN_number, PM[,2])],1]


This is then easily extended to the whole dataframe with apply or within a loop.



Edit: here's a for looped version:



for (test_TN_number in test[,"TN"]){
model[PM[match(test_TN_number, PM[,2])],1]
}






share|improve this answer














share|improve this answer



share|improve this answer








edited Nov 23 '18 at 14:10

























answered Nov 23 '18 at 13:46









Aaro ViertiöAaro Viertiö

1295




1295













  • Thanks @Aaro Viertiö, Can you add the apply for the whole dataframe (or loop).

    – Avi
    Nov 23 '18 at 13:59











  • Added a looped version.

    – Aaro Viertiö
    Nov 23 '18 at 14:11



















  • Thanks @Aaro Viertiö, Can you add the apply for the whole dataframe (or loop).

    – Avi
    Nov 23 '18 at 13:59











  • Added a looped version.

    – Aaro Viertiö
    Nov 23 '18 at 14:11

















Thanks @Aaro Viertiö, Can you add the apply for the whole dataframe (or loop).

– Avi
Nov 23 '18 at 13:59





Thanks @Aaro Viertiö, Can you add the apply for the whole dataframe (or loop).

– Avi
Nov 23 '18 at 13:59













Added a looped version.

– Aaro Viertiö
Nov 23 '18 at 14:11





Added a looped version.

– Aaro Viertiö
Nov 23 '18 at 14:11




















draft saved

draft discarded




















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53447642%2frunning-predictive-model-according-to-values-in-column%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

"Incorrect syntax near the keyword 'ON'. (on update cascade, on delete cascade,)

Alcedinidae

Origin of the phrase “under your belt”?