这可能非常简单,但我可以使用一些帮助...我已经构建了一个基于代理的模型,它可以执行300次任意步骤,具体取决于模型中发生的事情。结果数据的结构如下:
我想隔离以150步或更少步骤结束的运行并完整地分析它们(不仅仅是最后一步)。 R中最好的方法是什么?谢谢!
答案 0 :(得分:0)
首先,使用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)