如何将R中的数据帧拆分为循环相同N + 1次z的列?

时间:2014-09-11 20:01:10

标签: r dataframe subset

R中是否有一种简单的方法(即不使用for循环)根据循环相同N+1个数z次的列来中断数据帧?

以下是一个例子:

column1: 0, 1, 2, 3, ..., N, 0, 1, 2, 3, ..., N, ......, 0, 1, 2, 3, ..., N
column2: (randomly distributed numbers of same length as column1)

我希望**z**数据框看起来如下所示:

DF1:

column11: 0, 1, 2, 3, ..., N
column21: (randomly distributed numbers of same length as column1a)
.
.
.

DFZ:

column1**z**: 0, 1, 2, 3, ..., N
column2**z**: (randomly distributed numbers of same length as column1z)

另外,当我说我想要**z**个数据帧时,我真的只想要一种方法来使用第一个N+1数据点,第二个N+1数据点,等等。

1 个答案:

答案 0 :(得分:0)

split( dfrm , cumsum( c(0, diff(dfrm$col1)) < 0) )

split返回一个对象列表,在本例中为data.frames,由第二个参数的唯一值分隔。每次遇到col1值“drop”时,cumsum策略会递增1。

经过测试:

N <- 5
dfrm <- data.frame( col1 = rep(0:N, 5) , col2 = runif(30) )