Sql 如何使较小的表增长并匹配R中较大表的内容?
我有三个专栏。第一个较大,包含各种字母。第二个大小相同,但包含的字母较少,带有一些NAs。每个字母都可以在较大的列中找到。第三列的大小也相同,但包含第二列的值和相应的NAs 我的问题是如何使第二列和第三列重新排列,以便第二列尽可能与第一列匹配 我觉得答案和左键有关,但我想不出来 用文字解释有点奇怪,但例子很容易说明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
# 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