2

我有一个表格的数据框

A = data.frame(c(1485,1486,1701,1808))
names(A) <- c("ID")

和表单的第二个数据框

B = data.frame(1:12)
names(B) <- "value"

我希望能够使用它rep来在 B 中形成第二列,这样我就有

B$new <- rep(A,each = 3, length.out = 12)

给予

> B
   value  new
1      1 1485
2      2 1485
3      3 1485
4      4 1486
5      5 1486
6      6 1486
7      7 1701
8      8 1701
9      9 1701
10    10 1808
11    11 1808
12    12 1808

如果我定义,这很好用A = c(1485,1486,1701,1808),但因为 A 是一个数据框,所以它不是。如何将 A 转换为与 rep 一起使用的正确形式?我试过 as.list、as.vector、as.integer 都没有成功。

4

2 回答 2

3

作为A数据框,您需要指定要重复的列。(这里ID

B$new <- rep(A$ID,each = 3, length.out = 12)
B

#   value  new
#1      1 1485
#2      2 1485
#3      3 1485
#4      4 1486
#5      5 1486
#6      6 1486
#7      7 1701
#8      8 1701
#9      9 1701
#10    10 1808
#11    11 1808
#12    12 1808

在您的情况下,这也可以在不使用length.out参数的情况下工作

rep(A$ID,each = 3)

它将每 3 次重复一次IDA给出相同的结果。

于 2016-09-09T03:55:43.827 回答
1
If A is a data frame you can use rep function in this way

A = data.frame(c(1485,1486,1701,1808))
names(A) <- c("ID")

B = data.frame(1:12)
names(B) <- "value"


B$new <- sort(unlist(rep(A,times=3)))

print(B)
  value  new
1      1 1485
2      2 1485
3      3 1485
4      4 1486
5      5 1486
6      6 1486
7      7 1701
8      8 1701
9      9 1701
10    10 1808
11    11 1808
12    12 1808 
于 2016-09-09T04:22:47.567 回答