繁体   English   中英

选择与 dplyr 中随机选择的条件匹配的所有行

[英]Selecting all rows that match a criteria selected randomly within dplyr

我试图选择属于随机选择的一组人的重复测量数据集中的所有行。 我试图完全在tidyverse完成它(为了我自己的启迪),但发现自己不得不依靠基本的 R 函数。 这是我如何使用基本 R 和dplyr命令的组合来做到这dplyr

set.seed(145)
df <- data.frame(id = rep(letters[1:10], each = 4),
                 score = rnorm(40))
ids <- sample(unique(df$id), 3)
smallDF <- df %>% dplyr::filter(id %in% ids)
smallDF

#    id      score
# 1   a  0.6869129
# 2   a  1.0663631
# 3   a  0.5367006
# 4   a  1.9060287
# 5   c  1.1677516
# 6   c  0.7926794
# 7   c -1.2135038
# 8   c -1.0056141
# 9   d  0.2085696
# 10  d  0.4461776
# 11  d -0.6208060
# 12  d  0.4413429

我可以使用dplyrid标识符中随机dplyr ...

df %>% distinct(id) %>% sample_n(3)

#   id
# 1  e
# 2  c
# 3  b

...但输出是数据帧/tibble 的事实使我很难进入下一步,然后我通过随机选择的 id 标识符过滤原始df

任何人都可以帮忙吗?

您可以对原始df执行left_join以获取随机选择的 id 的所有行

library(dplyr)
set.seed(123)
df %>% distinct(id) %>% sample_n(3) %>% left_join(df)

#Joining, by = "id"
#   id  score
#1   b  1.063
#2   b  1.370
#3   b  0.528
#4   b  0.403
#5   f  0.343
#6   f -1.286
#7   f -0.534
#8   f  0.597
#9   c  1.168
#10  c  0.793
#11  c -1.214
#12  c -1.006
df %>% filter(id %in% sample(levels(id),3))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM