我有两个表。 第一个
char 1 2
<fct> <chr> <chr>
1 mild 2(2.00%) 2(2.00%)
2 moder 2(2.00%) 2(2.00%)
第二个
char `1 `2`
<fct> <chr> <chr>
1 mild 7 (25.00%) 7 (25.00%)
2 moder 7 (25.00%) 7 (25.00%)
我想将此表合并为一个。 即,作为我期望的输出
char 1 2
<fct> <chr> Y <chr> Y
mild 7(25.00%) 2(2.00%) 7(25.00%) 2(2.00%)
moder 7(25.00%) 2(2.00%) 7(25.00%) 2(2.00%)
如何做到?
答案 0 :(得分:2)
像这样绑定数据帧可能是不安全的,我建议改为完全连接:
df3 <- merge(df1, df2, by="char", all = TRUE)
df3[c("char",sort(names(df3)[-1]))]
# char 1.x 1.y 2.x 2.y
# 1 mild 2 (2.00%) 7 (25.00%) 2 (2.00%) 7 (25.00%)
# 2 moder 2 (2.00%) 7 (25.00%) 2 (2.00%) 7 (25.00%)
答案 1 :(得分:1)
假设您的两个表如下所示:
library(tidyverse)
df1 = data_frame(
char = factor(c('mild', 'moder')),
`1` = c('2 (2.00%)', '2 (2.00%)'),
`2` = c('2 (2.00%)', '2 (2.00%)'))
df2 = data_frame(
char = factor(c('mild', 'moder')),
`1` = c('7 (25.00%)', '7 (25.00%)'),
`2` = c('7 (25.00%)', '7 (25.00%)'))
# using base R
cbind(df1, df2)
#> char 1 2 char 1 2
#> 1 mild 2 (2.00%) 2 (2.00%) mild 7 (25.00%) 7 (25.00%)
#> 2 moder 2 (2.00%) 2 (2.00%) moder 7 (25.00%) 7 (25.00%)
# using tidyverse
bind_cols(df1, df2)
#> # A tibble: 2 x 6
#> char `1` `2` char1 `11` `21`
#> <fct> <chr> <chr> <fct> <chr> <chr>
#> 1 mild 2 (2.00%) 2 (2.00%) mild 7 (25.00%) 7 (25.00%)
#> 2 moder 2 (2.00%) 2 (2.00%) moder 7 (25.00%) 7 (25.00%)
我建议使用tidyverse,因为您不会以重复的列名结尾(这实际上会使对这些数据的进一步操作弄乱),但是您可能希望对其进行setNames
不管。