【发布时间】:2022-08-18 14:59:00
【问题描述】:
我正在尝试加入来自各种数据源的小标题列表。基本上,我有一个期刊列表,我正在尝试从其他来源添加一些信息。
这样做的目的之一是在一些也用于连接的列中填写缺失的数据。例如,我有以下两个类似于我的数据结构的数据集。
df1 <- tibble(journal_title = c(NA,
\"Journal of yyy\",
\"Journal of zzz\"),
issn = c(9999, 1234, NA))
df2 <- tibble(journal_title = c(\"Journal of xxx\", NA, \"Journal of zzz\"),
issn = c(9999, 1234, 8888),
rank = c(1,2,3))
> df1
# A tibble: 3 × 2
journal_title issn
<chr> <dbl>
1 NA 9999
2 Journal of yyy 1234
3 Journal of zzz NA
> df2
# A tibble: 3 × 3
journal_title issn rank
<chr> <dbl> <dbl>
1 Journal of xxx 9999 1
2 NA 1234 2
3 Journal of zzz 8888 3
我希望加入这两个数据集并基本上执行左连接,其中 x = df1 和 y = df2,即 df1 是我想从 df2 添加列的主要数据。
但是,如数据所示,有两个 ID 列应该用于连接功能。问题是其中一列中可能有 NA 。因此,使用by = c(\"issn\", \"journal_title\") 不起作用。
因此我想:
-
通过两列(
issn和journal_title)加入数据集,因为其中之一可能存在 NA。我想将 issn 保留为“第一次尝试”,然后如果 df2 中没有匹配项,则应使用journal_title。 -
用两个数据集中的值填写 NA。
我尝试通过使用 x =
issn和 y =journal_title合并两列来制作“合成”ID 列。但是,这不起作用,因为在某些情况下它没有考虑到这一点,例如,issn和journal_title都存在于第一个数据集,而对于相应的issn,只有journal_title存在于第二个数据集中。我的目标数据如下所示:
df3 <- tibble(journal_title = c(\"Journal of xxx\", \"Journal of yyy\", \"Journal of zzz\"), issn = c(9999, 1234, 8888), rank = c(1,2,3)) > df3 # A tibble: 3 × 3 journal_title issn rank <chr> <dbl> <dbl> 1 Journal of xxx 9999 1 2 Journal of yyy 1234 2 3 Journal of zzz 8888 3我希望我已经把自己说清楚了,任何帮助都将不胜感激!