【发布时间】:2014-01-15 04:27:44
【问题描述】:
我的问题在一个循环中,我有一个大型数据集 (DF),其中的一个子集如下所示:
ID Site Species
101 4 x
101 4 y
101 4 z
102 6 x
102 6 z
102 6 a
102 6 b
103 6 a
103 6 z
103 6 c
103 6 x
103 6 y
105 6 x
105 6 y
105 6 a
105 6 z
108 1 x
108 1 a
108 1 c
108 1 z
我想使用循环的每次迭代(因此,i)从每个站点中随机选择单个 ID 的所有行。但至关重要的是,每个站点只有一个 ID。我有一个单独的函数,它对我的大型数据集进行站点数量的子集化,因此如果 i=1 则只有上述站点之一(例如)将出现在子集中。
如果i=3,对于这个发布的示例,那么我想要所有 101 行,或者所有 102、103 或 105 行,以及所有 108。
我认为像 ddply() 和 sample() 这样的事情应该这样做,但我不能让它随机发生。
任何建议将不胜感激。 谢谢
詹姆斯
【问题讨论】:
-
您能解释一下为什么
i=3意味着应该选择那些IDs 以及为什么108与102, 103, 105不同?你能否展示一些代码来说明你在做什么,一些一般的设置。不清楚i是什么。 -
好的,抱歉,这里有更多上下文。我正在使用 specaccum() 跨不同数量的远程摄像机(ID 列)和不同数量的站点(站点列)引导物种累积曲线的生成。因此,对于一个站点,我需要一个摄像机,两个摄像机等的曲线,然后对于两个站点,一个摄像机,两个摄像机等的曲线。我的第一个循环:for (l in 1:length(sitelist)),subsets into l 可能的站点并生成这些站点上所有可能的摄像机的列表。我的下一个嵌套循环:for (i in 1:l) 是我想要对一台相机、两台相机(来自不同站点)等进行采样的地方。
-
108 与 102、103 和 105 不同,因为它位于不同的站点(站点列)。我想从每个站点中随机选择一个 ID。我提供的数据集显示了 i=3(3 个站点)的迭代,i(更多站点)的其他迭代中有更多的 ID,但我仍然只想要每个站点的一个 ID,不管 i 有多大(即如何有很多网站)。我希望这更有意义。
-
谢谢,我现在按照你想要的。