[英]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
我可以使用dplyr
从id
标识符中随机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.