Это на удивление сложно.Я пробовал варианты full_join
и bind_cols
и merge
, но не могу заставить это работать.
У меня есть:
> (t1 <- data.frame(x = letters[10:3], stringsAsFactors = FALSE))
x
1 j
2 i
3 h
4 g
5 f
6 e
7 d
8 c
и:
> (t2 <- data.frame(y = letters[1:4], stringsAsFactors = FALSE))
y
1 a
2 b
3 c
4 d
Я думаю, что я ищу какой-то тип full_join
, который сохраняет оба столбца и выполняет операции над множествами, потому что я хочу вернуть это:
> data.frame(
+ x = c(letters[10:3], NA, NA),
+ y = c(NA, NA, NA, NA, NA, NA, letters[4:1])
+ )
x y
1 j <NA>
2 i <NA>
3 h <NA>
4 g <NA>
5 f <NA>
6 e <NA>
7 d d
8 c c
9 <NA> b
10 <NA> a
Так что это похоже наfull_join
, но сохраняет оба столбца и заполняет NA, если есть различия.Например, это просто дает мне один столбец:
> full_join(t1, t2, by = c("x" = "y"))
x
1 j
2 i
3 h
4 g
5 f
6 e
7 d
8 c
9 a
10 b