【发布时间】:2015-03-03 23:32:56
【问题描述】:
更新问题
我忽略了在我最初的问题中包含一个重要方面。 @Jthorpe 提供的代码适用于 STUFF 的一列。但是,根据我的数据集,我将一次随机抽样 1 到 70 列。在我更新的示例中,我包含了 3 列 STUFF。所以我需要group_bySITE和DATE,然后从STUFF的多列中随机sample一行。请注意RESULT 表如何保留STUFF 列之间的数据顺序。例如,RESULT 表中的前两行都是 2,4,8,对应于DATA 表中的第 2 行。我希望这很清楚。再次感谢。
原始问题 我需要伪复制一个可能有多个组的数据集。此外,每个组可能有多个因素。我已经使用 for 循环编写了代码来对数据集进行子集化,然后对子集进行随机采样,然后将重新采样的数据集重新组合到一个新表中。我想使用一些更优雅和灵活的代码。我曾尝试使用 dplyr(例如 group_by 和 sample_n 函数),但无法让代码正确处理因子中的可变长度。我附上了一个示例数据集和所需的结果。提前感谢您的帮助。
DATA = data.frame(SITE = c("A","A","A","A","B","B","B","C","C"),
DATE = c("1","1","2","2","3","3","3","4","4"),
STUFF = c(1, 2, 30, 40, 100, 200, 300, 5000, 6000),
STUFF2 = c(2, 4, 60, 80, 200, 400, 600, 10000, 12000),
STUFF3 = c(4, 8, 120, 160, 400, 800, 1200, 20000, 24000))
RESULT = data.frame(SITE = c("A","A","A","A","B","B","B","C","C"),
DATE = c("1","1","2","2","3","3","3","4","4"),
STUFF = c(2, 2, 30, 30, 200, 300, 300, 6000, 5000),
STUFF2 = c(4, 4, 60, 60, 400, 600, 600, 12000, 10000),
STUFF3 = c(8, 8, 120, 120, 800, 1200, 1200, 24000, 20000))
【问题讨论】:
-
您想从
STUFF中采样,同时按SITE和DATE分组? -
是的。我想按 SITE 和 DATE 分组并随机抽样 STUFF。对不起...我应该在文本中更清楚一点。
-
您可能需要查看
sampling包以获得更彻底的测试解决方案。 -
你的意思是更彻底的测试解决方案?我将检查以确保“样本”功能正确地对我的组进行抽样。谢谢。
标签: r