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

时间:2015-07-25 23:32:57

标签: r dataframe rows

我想通过使用两个值向量在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的方法。

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:4)

这只是each函数的rep参数的问题。它完全符合其名称所暗示的内容。

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

答案 1 :(得分:4)

要捕捉游程长度的任何可能差异,以及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