我有两个数据帧(DF1 和 DF2),我想创建一个名为 DF_MAIN 的组合数据帧。为了清楚起见,DF1 由 5 列组成,而 DF2 由 3 列组成。我的目标是构造总共 10 列的 DF_MAIN,组织如下:DF1 中的前 5 列,后面是 2 个空列,然后是 DF2 中的剩余 3 列。值得注意的是,这些输入数据帧中的行数和列数可能会有所不同,但我的目标是将它们合并为具有指定列结构的单个综合数据帧。
示例数据框-
# Create a sample dataframe
DF1 <- data.frame(
A = sample(c("text", "string", NA, "", "123", 1.23, "#N/A"), 10, replace = TRUE),
B = sample(c("text", "string", NA, "", "123", 1.23, "#N/A"), 10, replace = TRUE),
C = sample(c("text", "string", NA, "", "123", 1.23, "#N/A"), 10, replace = TRUE)
)
set.seed(456)
DF2 <- data.frame(
D = sample(c("text", "string", NA, "", "456", 4.56, "#N/A"), 20, replace = TRUE),
E = sample(c("text", "string", NA, "", "789", 7.89, "#N/A"), 20, replace = TRUE),
F = sample(c("text", "string", NA, "", "123", 1.23, "#N/A"), 20, replace = TRUE),
G = sample(c("text", "string", NA, "", "987", 9.87, "#N/A"), 20, replace = TRUE),
H = sample(c("text", "string", NA, "", "321", 3.21, "#N/A"), 20, replace = TRUE)
)
print(DF1)
print(DF2)
最佳答案
如果 DF1 小于 DF2,则使用 rbind
和 cbind
与 matrix
分别将不匹配的行和列拼接在一起。
data.frame(
cbind(matrix(NA, nrow=nrow(DF1), ncol=ncol(DF2) - ncol(DF1)), DF1) |>
(\(x){
nms <- names(x)
rbind(as.matrix(x),
setNames(
matrix(NA, nrow=nrow(DF2) - nrow(DF1), ncol=ncol(DF2)),
nms))
})(),
DF2)
X1 X2 A B C D E F G H
1 <NA> <NA> string <NA> 123 456 789 <NA> 9.87 text
2 <NA> <NA> 1.23 #N/A 456 text 3.21
3 <NA> <NA> text text <NA> 7.89 1.23 <NA> string
4 <NA> <NA> 4.56 #N/A <NA> #N/A <NA>
5 <NA> <NA> text <NA> #N/A 456 text string string 321
6 <NA> <NA> 123 1.23 text text 1.23 <NA> 3.21
7 <NA> <NA> 123 <NA> 123 <NA> 7.89 <NA> #N/A <NA>
8 <NA> <NA> text <NA> text text 789 1.23 text text
9 <NA> <NA> 123 4.56 text <NA>
10 <NA> <NA> 123 text 123 #N/A string #N/A #N/A <NA>
11 <NA> <NA> <NA> <NA> <NA> string text 3.21
12 <NA> <NA> <NA> <NA> <NA> text string text 321
13 <NA> <NA> <NA> <NA> <NA> #N/A <NA> string string
14 <NA> <NA> <NA> <NA> <NA> string text text string
15 <NA> <NA> <NA> <NA> <NA> <NA> text 987 <NA>
16 <NA> <NA> <NA> <NA> <NA> <NA> string 1.23 9.87 321
17 <NA> <NA> <NA> <NA> <NA> #N/A #N/A string string
18 <NA> <NA> <NA> <NA> <NA> 4.56 text #N/A <NA> <NA>
19 <NA> <NA> <NA> <NA> <NA> 4.56 string <NA> #N/A
20 <NA> <NA> <NA> <NA> <NA> 456 text 1.23 text <NA>
关于r - 在 R 中创建组合数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77105649/