我有一个包含 1500 个数据帧的列表,每个数据帧有 3 个变量和 8 行(使用函数“split”生成)
我想按第 2 列(独立地)对它们进行排序,然后,排序后,我想消除该列(第 2 列)中低于某个值的所有行
任何的想法?
非常感谢您提前。
蒂娜。
这是一个小例子。
# dummy list of data.frames
set.seed(45)
df <- data.frame(V1=sample(8), V2= sample(8), V3 = sample(8))
df.list <- list(df, df, df, df, df, df, df, df)
# function that does the job
df.out <- lapply(df.list, function(x) {
x[order(x$V2)), ] # order by 2nd column using column name
x[x$V1 > 3, ] # filter by some criteria
# you can combine these two lines as:
# x[order(x$v2)), ][x$v2 > 3, ] (thanks @Ananda for the suggestion)
})
几个建议:
排序往往是一个缓慢的过程,您可以通过在排序之前先执行子集来加快该过程。或者您可能根本不需要排序。
任何时候您想将数据对象拆分为多个片段,对每个片段应用一个函数,然后将结果重新组合在一起,考虑使用 plyr 包,它可能会使过程更容易。
你的最终目标是什么?可能以更简单的方式完成整个事情。