-2

我有一个包含 1500 个数据帧的列表,每个数据帧有 3 个变量和 8 行(使用函数“split”生成)

我想按第 2 列(独立地)对它们进行排序,然后,排序后,我想消除该列(第 2 列)中低于某个值的所有行

任何的想法?

非常感谢您提前。

蒂娜。

4

2 回答 2

3

这是一个小例子。

# 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)
})
于 2013-03-07T18:27:52.940 回答
1

几个建议:

排序往往是一个缓慢的过程,您可以通过在排序之前先执行子集来加快该过程。或者您可能根本不需要排序。

任何时候您想将数据对象拆分为多个片段,对每个片段应用一个函数,然后将结果重新组合在一起,考虑使用 plyr 包,它可能会使过程更容易。

你的最终目标是什么?可能以更简单的方式完成整个事情。

于 2013-03-07T18:50:38.280 回答