我有一个表格
的数据框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失败了。
答案 0 :(得分: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)
它将在ID
中重复每次A
3次,给出相同的结果。
答案 1 :(得分: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