【问题标题】:How to obtain all possible sub-samples of size n from a dataframe of size N in R?如何从 R 中大小为 N 的数据帧中获取大小为 n 的所有可能子样本?
【发布时间】:2012-11-27 03:51:18
【问题描述】:

我有一个数据框,其中包含 20 个教室 [1 到 20] 索引和每个班级 20 个不同数量的学生,如何获取大小为 n = 8 的所有子样本并存储它们,因为我想稍后使用它们进行计算.我使用了combn(),但它只需要一个向量,我可以将它与数据框一起使用吗?如何使用? (对不起,我是 R 的新手), 下面的数据框:

   classrooms students
1           1       29
2           2       30
3           3       35
4           4       28
5           5       32
6           6       20
7           7       25
8           8       22
9           9       32
10         10       26
11         11       27
12         12       34
13         13       27
14         14       28
15         15       33
16         16       21
17         17       36
18         18       24
19         19       19
20         20       32

【问题讨论】:

  • 请添加机器可读代码以生成您的数据框。 dput() 非常适合这个。
  • read.table('clipboard', header = TRUE) 可以工作(尽管dput 更可取)
  • @mnel,我不知道你能做到这一点!很酷。

标签: r vector dataframe sample


【解决方案1】:

就像将函数传递给combn 一样简单。 simplify = FALSE 表示将返回一个列表。

假设您想要数据集中 8 个教室的所有可能组合

 combinations <- combn(nrow(classrooms), 8, function(x,data) data[x,], 
                  simplify = FALSE, data =classrooms )

 head(combinations, n = 2)

[[1]]
  classrooms students
1          1       29
2          2       30
3          3       35
4          4       28
5          5       32
6          6       20
7          7       25
8          8       22

[[2]]
  classrooms students
1          1       29
2          2       30
3          3       35
4          4       28
5          5       32
6          6       20
7          7       25
9          9       32

【讨论】:

  • 感谢您的快速响应,但是当我运行它时出现错误,> combn(nrow(classrooms),2,function(x,data) data[x,],simplify = FALSE, data=classrooms) 组合错误(nrow(classrooms), 2, function(x, data) data[x, ], simple = FALSE, : n
  • 我的解决方案假定您的数据集是一个名为 classrooms 的 data.frame。如果是这种情况,我的解决方案应该有效。 (对我有用)
  • 这是很多组合ncol(combn(20,8)) = 125970。在需要时只选择组合而不是拥有一个巨大的列表会更好吗?类似:test[combn(nrow(test),8)[,1],] 可用于根据需要生成数据。
猜你喜欢
  • 2019-03-19
  • 2013-02-21
  • 1970-01-01
  • 2023-01-25
  • 1970-01-01
  • 2021-08-22
  • 2017-11-14
  • 2019-03-28
  • 1970-01-01
相关资源
最近更新 更多