Select random rows that match string





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







1















I want to randomly select rows from df2 that matches Birth_Sex. The number of rows selected should be equal to the number of rows in df1 (2 in this example).



df1



  Birth_Sex
1999_1
1969_1


df2



 ID          Birth_Sex
123113 1999_1
123123 1992_0
123233 1959_0
124513 1969_1
124993 1969_1
124545 1969_1


Example output



 ID          Birth_Sex
124545 1969_1
123113 1999_1









share|improve this question





























    1















    I want to randomly select rows from df2 that matches Birth_Sex. The number of rows selected should be equal to the number of rows in df1 (2 in this example).



    df1



      Birth_Sex
    1999_1
    1969_1


    df2



     ID          Birth_Sex
    123113 1999_1
    123123 1992_0
    123233 1959_0
    124513 1969_1
    124993 1969_1
    124545 1969_1


    Example output



     ID          Birth_Sex
    124545 1969_1
    123113 1999_1









    share|improve this question

























      1












      1








      1








      I want to randomly select rows from df2 that matches Birth_Sex. The number of rows selected should be equal to the number of rows in df1 (2 in this example).



      df1



        Birth_Sex
      1999_1
      1969_1


      df2



       ID          Birth_Sex
      123113 1999_1
      123123 1992_0
      123233 1959_0
      124513 1969_1
      124993 1969_1
      124545 1969_1


      Example output



       ID          Birth_Sex
      124545 1969_1
      123113 1999_1









      share|improve this question














      I want to randomly select rows from df2 that matches Birth_Sex. The number of rows selected should be equal to the number of rows in df1 (2 in this example).



      df1



        Birth_Sex
      1999_1
      1969_1


      df2



       ID          Birth_Sex
      123113 1999_1
      123123 1992_0
      123233 1959_0
      124513 1969_1
      124993 1969_1
      124545 1969_1


      Example output



       ID          Birth_Sex
      124545 1969_1
      123113 1999_1






      r






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Jan 4 at 9:09









      user2300940user2300940

      729515




      729515
























          3 Answers
          3






          active

          oldest

          votes


















          2














          For each entry of Birth_Sex in df1 we first find the row numbers which have that entry in df2 and select index of any one row to subset df2.



          df2[sapply(df1$Birth_Sex, function(x) {
          inds = which(df2$Birth_Sex %in% x)
          if(length(inds) > 1) sample(inds, 1) else inds
          }), ]


          # ID Birth_Sex
          #1 123113 1999_1
          #4 124513 1969_1





          share|improve this answer

































            3














            With dplyr



            library(dplyr)
            df2 %>%
            inner_join(df1) %>%
            group_by(Birth_Sex) %>%
            sample_n(1)
            Joining, by = "Birth_Sex"
            # A tibble: 2 x 2
            # Groups: Birth_Sex [2]
            ID Birth_Sex
            <int> <chr>
            1 124993 1969_1
            2 123113 1999_1





            share|improve this answer































              2














              Here is the data.table solution as well



              library(data.table)

              setDT(df1)[setDT(df2), nomatch = 0L,on = 'Birth_Sex'][, .SD[sample(.N, 1)], by = Birth_Sex]

              # Birth_Sex ID
              #1: 1969_1 124513
              #2: 1999_1 123113





              share|improve this answer
























                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%2f54035886%2fselect-random-rows-that-match-string%23new-answer', 'question_page');
                }
                );

                Post as a guest















                Required, but never shown

























                3 Answers
                3






                active

                oldest

                votes








                3 Answers
                3






                active

                oldest

                votes









                active

                oldest

                votes






                active

                oldest

                votes









                2














                For each entry of Birth_Sex in df1 we first find the row numbers which have that entry in df2 and select index of any one row to subset df2.



                df2[sapply(df1$Birth_Sex, function(x) {
                inds = which(df2$Birth_Sex %in% x)
                if(length(inds) > 1) sample(inds, 1) else inds
                }), ]


                # ID Birth_Sex
                #1 123113 1999_1
                #4 124513 1969_1





                share|improve this answer






























                  2














                  For each entry of Birth_Sex in df1 we first find the row numbers which have that entry in df2 and select index of any one row to subset df2.



                  df2[sapply(df1$Birth_Sex, function(x) {
                  inds = which(df2$Birth_Sex %in% x)
                  if(length(inds) > 1) sample(inds, 1) else inds
                  }), ]


                  # ID Birth_Sex
                  #1 123113 1999_1
                  #4 124513 1969_1





                  share|improve this answer




























                    2












                    2








                    2







                    For each entry of Birth_Sex in df1 we first find the row numbers which have that entry in df2 and select index of any one row to subset df2.



                    df2[sapply(df1$Birth_Sex, function(x) {
                    inds = which(df2$Birth_Sex %in% x)
                    if(length(inds) > 1) sample(inds, 1) else inds
                    }), ]


                    # ID Birth_Sex
                    #1 123113 1999_1
                    #4 124513 1969_1





                    share|improve this answer















                    For each entry of Birth_Sex in df1 we first find the row numbers which have that entry in df2 and select index of any one row to subset df2.



                    df2[sapply(df1$Birth_Sex, function(x) {
                    inds = which(df2$Birth_Sex %in% x)
                    if(length(inds) > 1) sample(inds, 1) else inds
                    }), ]


                    # ID Birth_Sex
                    #1 123113 1999_1
                    #4 124513 1969_1






                    share|improve this answer














                    share|improve this answer



                    share|improve this answer








                    edited Jan 4 at 9:25

























                    answered Jan 4 at 9:11









                    Ronak ShahRonak Shah

                    47.1k104269




                    47.1k104269

























                        3














                        With dplyr



                        library(dplyr)
                        df2 %>%
                        inner_join(df1) %>%
                        group_by(Birth_Sex) %>%
                        sample_n(1)
                        Joining, by = "Birth_Sex"
                        # A tibble: 2 x 2
                        # Groups: Birth_Sex [2]
                        ID Birth_Sex
                        <int> <chr>
                        1 124993 1969_1
                        2 123113 1999_1





                        share|improve this answer




























                          3














                          With dplyr



                          library(dplyr)
                          df2 %>%
                          inner_join(df1) %>%
                          group_by(Birth_Sex) %>%
                          sample_n(1)
                          Joining, by = "Birth_Sex"
                          # A tibble: 2 x 2
                          # Groups: Birth_Sex [2]
                          ID Birth_Sex
                          <int> <chr>
                          1 124993 1969_1
                          2 123113 1999_1





                          share|improve this answer


























                            3












                            3








                            3







                            With dplyr



                            library(dplyr)
                            df2 %>%
                            inner_join(df1) %>%
                            group_by(Birth_Sex) %>%
                            sample_n(1)
                            Joining, by = "Birth_Sex"
                            # A tibble: 2 x 2
                            # Groups: Birth_Sex [2]
                            ID Birth_Sex
                            <int> <chr>
                            1 124993 1969_1
                            2 123113 1999_1





                            share|improve this answer













                            With dplyr



                            library(dplyr)
                            df2 %>%
                            inner_join(df1) %>%
                            group_by(Birth_Sex) %>%
                            sample_n(1)
                            Joining, by = "Birth_Sex"
                            # A tibble: 2 x 2
                            # Groups: Birth_Sex [2]
                            ID Birth_Sex
                            <int> <chr>
                            1 124993 1969_1
                            2 123113 1999_1






                            share|improve this answer












                            share|improve this answer



                            share|improve this answer










                            answered Jan 4 at 9:12









                            jyjekjyjek

                            1,502314




                            1,502314























                                2














                                Here is the data.table solution as well



                                library(data.table)

                                setDT(df1)[setDT(df2), nomatch = 0L,on = 'Birth_Sex'][, .SD[sample(.N, 1)], by = Birth_Sex]

                                # Birth_Sex ID
                                #1: 1969_1 124513
                                #2: 1999_1 123113





                                share|improve this answer




























                                  2














                                  Here is the data.table solution as well



                                  library(data.table)

                                  setDT(df1)[setDT(df2), nomatch = 0L,on = 'Birth_Sex'][, .SD[sample(.N, 1)], by = Birth_Sex]

                                  # Birth_Sex ID
                                  #1: 1969_1 124513
                                  #2: 1999_1 123113





                                  share|improve this answer


























                                    2












                                    2








                                    2







                                    Here is the data.table solution as well



                                    library(data.table)

                                    setDT(df1)[setDT(df2), nomatch = 0L,on = 'Birth_Sex'][, .SD[sample(.N, 1)], by = Birth_Sex]

                                    # Birth_Sex ID
                                    #1: 1969_1 124513
                                    #2: 1999_1 123113





                                    share|improve this answer













                                    Here is the data.table solution as well



                                    library(data.table)

                                    setDT(df1)[setDT(df2), nomatch = 0L,on = 'Birth_Sex'][, .SD[sample(.N, 1)], by = Birth_Sex]

                                    # Birth_Sex ID
                                    #1: 1969_1 124513
                                    #2: 1999_1 123113






                                    share|improve this answer












                                    share|improve this answer



                                    share|improve this answer










                                    answered Jan 4 at 9:24









                                    SotosSotos

                                    31.5k51741




                                    31.5k51741






























                                        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%2f54035886%2fselect-random-rows-that-match-string%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

                                        Monofisismo

                                        Angular Downloading a file using contenturl with Basic Authentication

                                        Olmecas