2013-03-07 68 views
-2

我有1500個dataframes列表,每個具有3個變量和8行(與功能「分裂」產生)問題中的R分割一個數據幀

我想排序所有這些(獨立地)通過列2,然後,一旦排序,我想排除列中的某個值以下的所有行(列2)

任何想法?

非常感謝您提前。

Tina。

+5

添加一些示例數據 – 2013-03-07 18:24:46

回答

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) 
}) 
1

一對夫婦的建議:

排序往往是一個緩慢的過程,你也許能夠加快這一進程有點通過排序之前,首先做的子集。或者你可能根本不需要排序。如果您想將數據對象拆分爲多個部分,對每個部分應用一個函數,然後將結果放回到一起,請考慮使用plyr包,這可能會使過程更輕鬆。

你最終的目標是什麼?有可能以更簡單的方式完成整個事情。