基于r中的一列拆分数据帧

时间:2013-09-10 20:03:43

标签: r split dataframe

我有一个大约1M行的庞大数据框,并希望根据一列和一列分割数据帧。不同的范围。 示例数据帧:

    length<-sample(rep(1:400),100)
    var1<-rnorm(1:100)
    var2<-sample(rep(letters[1:25],4))
    test<-data.frame(length,var1,var2)

我想基于不同范围的长度来分割数据帧(例如:所有行的长度在1到50之间)。

    range_length<-list(1:50,51:100,101:150,151:200,201:250,251:300,301:350,351:400)

我可以通过数据框的子集来实现这一点,例如:test1<-test[test$length>1 &test$length<50,] 但我正在寻找更有效的方式使用“分裂”(只是一行)

1 个答案:

答案 0 :(得分:2)

range = seq(0,400,50)
split(test, cut(test$length, range))

但请注意Justin的建议,并考虑使用data.table代替data.frame,我还要补充一点,实际上需要分割数据的可能性非常小。帧/表。