2017-02-15 76 views
0

我想将数据帧传递给一个将其拆分成两半但保留顺序的函数(例如,10行df和1-5行都在一个返回的df中第6-10行在另一个返回的df)。我试图使用功能split()到(返回2个DFS的名单,但是当我用它sample()混合了订单。如何将有序数据帧拆分为前半部分和后半部分

split_df<- function(df) 
{ 
    test = split(df, sample(1:2,length(df)/2)) 
    return(test) 
} 

我在为sample()与输入的麻烦。我认识的人问关于拆分数据帧在这里,但我不能让这出于某种原因,我可以用别的什么,除了sample()

回答

1

sample函数的名称可能会扔你。它适用于随机取而代之尝试rep()

split_df <- function(df) { 
    test <- split(df, rep(1:2,each=length(df)/2)) 
    return(test) 
} 
0

你可以这样做也是在一个非常基本的方式

split_df <- function(df) { 
     df1 <- df[1:ceiling(length(df[ , 1])), ] 
     df2 <- df[ceiling(length(df[ , 1])):length(df[ , 1]), ] 
     return(list(df1, df2)) 
}