繁体   English   中英

如何在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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM