【发布时间】:2019-12-17 02:53:17
【问题描述】:
我正在尝试选择重复测量数据集中属于随机选定的一组人的所有行。我试图完全在tidyverse(为了我自己的教化)中完成它,但发现自己不得不依靠基本的 R 函数。下面是我结合使用基本 R 和 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标识符中随机抽样...
df %>% distinct(id) %>% sample_n(3)
# id
# 1 e
# 2 c
# 3 b
...但是输出是数据帧/小标题的事实使我很难进入下一步,然后我通过随机选择的 id 标识符过滤原始 df。
有人可以帮忙吗?
【问题讨论】:
-
使用基本 R 函数并没有错,仅仅因为你使用了一些 dplyr 函数并不意味着你不能或不应该也使用基本函数
-
谢谢@Camille。两者都知道不会有什么坏处吧?
-
对,这就是为什么我认为很多人认为他们必须(甚至可以)只使用 tidyverse 函数很奇怪