Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.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
Sql 如何使较小的表增长并匹配R中较大表的内容?_Sql_R_Sorting_Left Join - Fatal编程技术网

Sql 如何使较小的表增长并匹配R中较大表的内容?

Sql 如何使较小的表增长并匹配R中较大表的内容?,sql,r,sorting,left-join,Sql,R,Sorting,Left Join,我有三个专栏。第一个较大,包含各种字母。第二个大小相同,但包含的字母较少,带有一些NAs。每个字母都可以在较大的列中找到。第三列的大小也相同,但包含第二列的值和相应的NAs 我的问题是如何使第二列和第三列重新排列,以便第二列尽可能与第一列匹配 我觉得答案和左键有关,但我想不出来 用文字解释有点奇怪,但例子很容易说明 # Original Situation Large <- c("B", "D", "C", "A", "E") Small <- c("D", "A", NA, NA

我有三个专栏。第一个较大,包含各种字母。第二个大小相同,但包含的字母较少,带有一些NAs。每个字母都可以在较大的列中找到。第三列的大小也相同,但包含第二列的值和相应的NAs

我的问题是如何使第二列和第三列重新排列,以便第二列尽可能与第一列匹配

我觉得答案和左键有关,但我想不出来

用文字解释有点奇怪,但例子很容易说明

# Original Situation

Large <- c("B", "D", "C", "A", "E")
Small <- c("D", "A", NA, NA, NA)
Number <- c(5, 12, NA, NA, NA)

data.frame(Large, Small, Number)
#>   Large Small Number
#> 1     B     D      5
#> 2     D     A     12
#> 3     C  <NA>     NA
#> 4     A  <NA>     NA
#> 5     E  <NA>     NA



# I want it to finish like this:

Large <- c("B", "D", "C", "A", "E")
Small <- c(NA, "D", NA, "A", NA)
Number <- c(NA, 5, NA, 12, NA)

data.frame(Large, Small, Number)
#>   Large Small Number
#> 1     B  <NA>     NA
#> 2     D     D      5
#> 3     C  <NA>     NA
#> 4     A     A     12
#> 5     E  <NA>     NA
#原始情况
大型2D A 12
#>3c-NA
#>4 A NA
#>5 E NA
#我希望它像这样结束:
大型2D 5
#>3c-NA
#>4 A 12
#>5 E NA
库(dplyr)
#我发现“tible”通常比“data.frame”好`
#如果要使用'data.frame',请记住指定stringAsFactors=FALSE
df_large这里有一个基本方法:

x <- df[1]
y <- setNames(df[c(2, 2, 3)], names(df))
merge(x, y, all.x = T)

#   Large Small Number
# 1     A     A     12
# 2     B  <NA>     NA
# 3     C  <NA>     NA
# 4     D     D      5
# 5     E  <NA>     NA

Large
Small
中的值是否唯一?如果没有,当存在多个匹配时,期望的结果是什么?
library(tidyverse)
df %>%
  mutate(Large = Small) %>%
  right_join(df[1])

#   Large Small Number
# 1     B  <NA>     NA
# 2     D     D      5
# 3     C  <NA>     NA
# 4     A     A     12
# 5     E  <NA>     NA