如何在 R 中组织 data.frame 的行

How to organize rows of a data.frame in R

我想通过使用两个值向量在 R 中构建一个 3x3 data.frame:一个 x 值向量 (xr) 和一个 y 值向量 (yr)。 xr 有 3 个值,yr 有 9 个值。

这是我的例子:

    xr<-c(1,2,3)
    yr<-c(4,4,4,5,5,5,6,6,6)
    db<-data.frame(x=xr,y=yr)

结果data.frame如下:

    > db
    x y
    1 4
    2 4
    3 4
    1 5
    2 5
    3 5
    1 6
    2 6
    3 6

不过,我希望 data.frame 是这样的:

    > db
    x y
    1 4
    1 4
    1 4
    2 5
    2 5
    2 5
    3 6
    3 6
    3 6

简单的方法是使用另一个 xr,具有明确的 x 值序列,如下所示:

    xr<-c(1,2,3,1,2,3,1,2,3)    

不过,我正在寻找一种通过使用与第一个示例中相同的 xr 来创建这种 data.frame 的方法。

非常感谢任何帮助!

这只是 rep 函数的 each 参数的问题。它的功能正如它的名字所暗示的那样。

db<-data.frame(x= rep(xr, each = 3) ,y=yr)
 db
  x y
1 1 4
2 1 4
3 1 4
4 2 5
5 2 5
6 2 5
7 3 6
8 3 6
9 3 6

要捕获 运行 长度的任何可能差异,以及 rep(),您可能需要 rle()

data.frame(x = rep(xr, rle(yr)$lengths), y = yr)

为了说明我的意思,取zr如下。它有不同的 运行 长度(即它们不全是 3)。

zr <- c(4, 4, 4, 5, 5, 6)
data.frame(x = rep(xr, rle(zr)$lengths), z = zr)
#   x z
# 1 1 4
# 2 1 4
# 3 1 4
# 4 2 5
# 5 2 5
# 6 3 6