【问题标题】:Insert alternating vectors into data frame将交替向量插入数据框中
【发布时间】:2013-10-25 17:18:32
【问题描述】:

我有两个向量:

a <- c(ceiling(seq(0, top, length.out = 20)))

b <- c(floor(seq(100, bottom, length.out = 20)))

a : 1  2  2  2  3  3  3  4  4  4  5  5  5 .....

b : 100  98  96  95  93  91  90  88  86  85  83  82 .....

我想通过交替向量项并添加一个额外的变量来创建一个数据框。 1 表示向量 a 分量,-1 表示向量 b 分量。

number sign
1      1
100    -1
2      1
98    -1

等等……

如果一个向量比另一个长(如果没有更多的交替可能),则将其剩余值添加到数据帧的末尾。 我有这样的事情:

for (n in [1:length(a)]) {
dataframe[nrow(dataframe)+1,] <- c(a[n],1)
dataframe[nrow(dataframe)+1,] <- c(b[n],-1)
}

这只是将每个向量的第一个值相加,然后返回: 错误:“}”中出现意外的“}”

我在这里不知所措.. 非常感谢帮助。谢谢!

【问题讨论】:

  • top 和 bottom 等于什么?
  • @SimonO101 它取决于每次迭代,但这里举个例子,我认为顶部是 8,底部是 72
  • 如果你指定了length.out 值,一个向量怎么会比另一个长?我怀疑你没有充分描述你想要解决的问题。
  • @AnandaMahto 因为将来可能需要进行重复数据删除,这可能会使一个向量比另一个向量更长

标签: r vector dataframe


【解决方案1】:

只需使用rbindcbindas.vector

a <- c(ceiling(seq(0, 5, length.out = 10)))
b <- c(floor(seq(100, 5, length.out = 10)))
a
#  [1] 0 1 2 2 3 3 4 4 5 5
b
#  [1] 100  89  78  68  57  47  36  26  15   5
cbind(as.vector(rbind(a, b)), c(1, -1))
#       [,1] [,2]
#  [1,]    0    1
#  [2,]  100   -1
#  [3,]    1    1
#  [4,]   89   -1
#  [5,]    2    1
#  [6,]   78   -1
#  [7,]    2    1
#  [8,]   68   -1
#  [9,]    3    1
# [10,]   57   -1
# [11,]    3    1
# [12,]   47   -1
# [13,]    4    1
# [14,]   36   -1
# [15,]    4    1
# [16,]   26   -1
# [17,]    5    1
# [18,]   15   -1
# [19,]    5    1
# [20,]    5   -1

## Or, if you want a data.frame
## data.frame(A = as.vector(rbind(a, b)), B = c(1, -1))

【讨论】:

    【解决方案2】:

    我认为 d2[,v1] 你正在尝试创建什么 -

    a <- sample(0:49, 10)
    b <- sample(50:100, 20)
    
    adf <- data.frame(
    v1 = a,
    v2 = 1:length(a),
    v3 = 1
    )
    bdf <- data.frame(
    v1 = b,
    v2 = 1:length(b),
    v3 = -1
    )
    
    d <- rbind(adf,bdf)
    d2 <- d[with(d,order(v2,v3)),]
    

    输出:

    > d2
       v1 v2 v3
    11 93  1 -1
    1  31  1  1
    12 70  2 -1
    2  29  2  1
    13 72  3 -1
    3   1  3  1
    14 77  4 -1
    4  28  4  1
    15 57  5 -1
    5  16  5  1
    16 66  6 -1
    6   5  6  1
    17 91  7 -1
    7  11  7  1
    18 73  8 -1
    8   3  8  1
    19 60  9 -1
    9  23  9  1
    20 67 10 -1
    10 43 10  1
    21 88 11 -1
    22 97 12 -1
    23 80 13 -1
    24 52 14 -1
    25 63 15 -1
    26 86 16 -1
    27 51 17 -1
    28 89 18 -1
    29 84 19 -1
    30 55 20 -1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多