如何将有序数据帧拆分为上半部分和后半部分

时间:2017-02-15 23:20:52

标签: r dataframe split

我想将一个数据框传递给一个函数,该函数将它分成两半但保留顺序(例如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()之外我还能使用什么?

2 个答案:

答案 0 :(得分:1)

sample功能的名称可能会让你失望。它适用于随机采样。请尝试rep()

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

答案 1 :(得分: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))
}