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;
}
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
add a comment |
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
add a comment |
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
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
r
asked Jan 4 at 9:09
user2300940user2300940
729515
729515
add a comment |
add a comment |
3 Answers
3
active
oldest
votes
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
add a comment |
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
add a comment |
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
add a comment |
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
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
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
add a comment |
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
add a comment |
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
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
edited Jan 4 at 9:25
answered Jan 4 at 9:11
Ronak ShahRonak Shah
47.1k104269
47.1k104269
add a comment |
add a comment |
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
add a comment |
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
add a comment |
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
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
answered Jan 4 at 9:12
jyjekjyjek
1,502314
1,502314
add a comment |
add a comment |
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
add a comment |
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
add a comment |
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
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
answered Jan 4 at 9:24
SotosSotos
31.5k51741
31.5k51741
add a comment |
add a comment |
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.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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