将 r 数据帧转换为正确的格式以使用 rep
Convert an r dataframe to correct format to use rep
我有一个形式的数据框
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 都不成功。
由于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)
它将在 A
中每隔 ID
重复 3 次,给出相同的结果。
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
我有一个形式的数据框
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 都不成功。
由于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)
它将在 A
中每隔 ID
重复 3 次,给出相同的结果。
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