在tidyr联接之后,根据原始数据帧对列进行排序
在对彼此的两个数据帧进行tidyr连接之后,如何根据返回的列的原始数据帧对它们进行排序?我在下面提出了几个解决方案。第一个感觉很笨重。第二种可能不是好的做法。我想我错过了什么在tidyr联接之后,根据原始数据帧对列进行排序,r,dplyr,tidyr,R,Dplyr,Tidyr,在对彼此的两个数据帧进行tidyr连接之后,如何根据返回的列的原始数据帧对它们进行排序?我在下面提出了几个解决方案。第一个感觉很笨重。第二种可能不是好的做法。我想我错过了什么 library(tidyverse) a <- data_frame(x1 = LETTERS[1:3], x2 = 1:3) b <- data_frame(x1 = LETTERS[c(1,2,4)], x3 = c(TRUE, FALSE, TRUE)) # Not the order I want
library(tidyverse)
a <- data_frame(x1 = LETTERS[1:3], x2 = 1:3)
b <- data_frame(x1 = LETTERS[c(1,2,4)], x3 = c(TRUE, FALSE, TRUE))
# Not the order I want
left_join(a, b, by = "x1")
# This is the order I want
a %>%
left_join(b, by = "x1") %>%
select(names(b), names(a)[!(names(a) %in% names(b))])
# This works too.
right_join(b, a, by = "x1")
库(tidyverse)
a%
选择(名称(b),名称(a)[!(名称(a)%in%names(b)))
#这也行得通。
右键联接(b,a,by=“x1”)
我想你可以做唯一的(c(名字(b),名字(a))
:
a%>%
左联合(b,by=“x1”)%>%
选择(唯一(c(名称(b)、名称(a)))
#一个tibble:3x3
#x1x3 x2
#
#真正的
#2 B错误2
#3c-na3
我想你可以做唯一的(c(名字(b),名字(a))
:
a%>%
左联合(b,by=“x1”)%>%
选择(唯一(c(名称(b)、名称(a)))
#一个tibble:3x3
#x1x3 x2
#
#真正的
#2 B错误2
#3c-na3
a %>%
left_join(b, by = "x1") %>%
select(unique(c(names(b), names(a))))
# A tibble: 3 x 3
# x1 x3 x2
# <chr> <lgl> <int>
#1 A TRUE 1
#2 B FALSE 2
#3 C NA 3