这可能很容易,但我可以使用一些帮助......我已经构建了一个基于代理的模型,该模型可以运行 300 次任意数量的步骤,具体取决于模型内部发生的情况。结果数据的结构如下:
我想隔离以 150 步或更少步结束的运行,并对其进行整体分析(不仅仅是最后一步)。在 R 中执行此操作的最佳方法是什么?谢谢!
这可能很容易,但我可以使用一些帮助......我已经构建了一个基于代理的模型,该模型可以运行 300 次任意数量的步骤,具体取决于模型内部发生的情况。结果数据的结构如下:
我想隔离以 150 步或更少步结束的运行,并对其进行整体分析(不仅仅是最后一步)。在 R 中执行此操作的最佳方法是什么?谢谢!
首先,用于aggregate
获取每次运行的步数:
n_steps <- aggregate(AT6$run, by=list(run=AT6$run), FUN=length)
现在计算一个过滤器变量:
n_steps <- within(n_steps, filter <- x<=150)
与原始数据合并并仅保留过滤的运行:
AT6_f <- merge(AT6, n_steps)
AT6_f <- AT6_f[AT6_f$filter,]
最后通过运行拆分 data.frame:
result <- split(AT6_f, AT6_f$run)
注意:结果是一个列表,每个元素都是一个包含单个运行的 data.frame。如果你有一个f
分析每次运行的函数,你应该将上面的结果传递给它:
lapply(result, f)