【发布时间】:2015-05-07 17:59:21
【问题描述】:
这可能是一个相当复杂的问题,所以如果有人至少可以为我指出正确的方向,我可能会自己解决剩下的问题。
样本数据:
dat <- data.frame(A = c(1, 4, 5, 3, NA, 5), B = c(6, 5, NA, 5, 3, 5), C = c(5, 3, 1, 5, 3, 7), D = c(5, NA, 3, 10, 4, 5))
A B C D
1 1 6 5 5
2 4 5 3 NA
3 5 NA 1 3
4 3 5 5 10
5 NA 3 3 4
6 5 5 7 5
我想从上面显示的表格中找到不同长度的字母序列的所有可能排列。例如,一个有效的字母序列可能是:A C A D D B。另一个有效序列可能是B C C。
但是,我想了解一些例外情况:
1。必须能够指定返回序列的最小长度。
请注意,在我上面的示例中,最小序列长度为 3,最大序列长度等于行数。我希望能够指定最小值(最大值将始终等于行数,在示例数据的情况下为 6)。
请注意,如果序列长度小于 6,则无法通过跳过行生成。换句话说,任何短序列都必须来自连续的行。 基于 cmets 的说明:短序列不必从第 1 行开始。短序列可以从第 3 行开始,然后通过连续的行继续到第 6 行。
2。具有 NA 值的字母不可用于采样。
请注意,在第 2 行的 D 列中有一个 NA。这意味着 D 不能用于第 2 行中的采样。因此,A B D 将是有效组合,但 A D D 将无效。
3。必须根据每个单元格中的值对序列进行排序。
注意每个单元格中的特定值。选择的每个序列可以通过汇总表中显示的所选字母的值来排名。使用上面的示例A C A D D B 将具有1+3+5+10+4+5 的等级。因此,在生成所有可能的序列时,它们应该从最高等级到最低等级进行排序。
我想将所有这三个规则应用于上面列出的数据表,以找到最小长度为 3 和最大长度为 6 的所有可能的序列组合。
如果我需要澄清任何事情,请告诉我!
【问题讨论】:
-
您是要采样还是查找所有排列?我认为你想要后者(给定一个如上所述结构的数据框,你会得到满足你的长度结构要求的所有可能的排列,按分数排名)但我想确认一下。
-
另外,您说任何短序列都必须在不跳过行的情况下完成。这是否意味着您不能跳过任何行(即您必须从第一行开始每个排列)?
-
@TARehman 你是对的,我试图找到所有排列。我使用样本这个词的原因是因为您可以根据您选择(从)列中的哪个字母来获得相同长度的不同序列。但我现在看到排列将涵盖所有这些不同的可能性。
-
@TARehman 不,您可以在序列开始之前跳过行(即,您可以从第 3 行开始序列)。但是随后,序列的其余部分不能跳过任何内容(因此它将包括第 3、4、5 和 6 行)。我将编辑我的帖子以进行澄清,谢谢。
标签: r random-sample