Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在tidyr联接之后,根据原始数据帧对列进行排序_R_Dplyr_Tidyr - Fatal编程技术网

在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

在对彼此的两个数据帧进行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
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