如何解决如何在 R 中的任何匹配子句上进行 LEFT JOIN?
你能帮我解决这个问题吗:
我有一个数据框 (df1
),其中包含网站 CMS 中发布的所有文章的索引。有一列用于当前 URL
和一列原始 URL,以防它们在发布后发生更改(列名称 Origin
):
网址 | 起源 | 文章ID | 作者 | 类别 | 成本 |
---|---|---|---|---|---|
https://example.com/article1 | https://example.com/article | 001 | 作者姓名 | 政治 | 120 美元 |
https://example.com/article2 | https://example.com/article2 | 002 | 作者姓名 | 金融 | 68 美元 |
接下来,我有一个巨大的数据框 (df2
),其中包含一段时间内的网络分析导出。它有一个日期,只有 1 列用于显示 URL 和浏览量。
网页浏览日期 | 网址 | 浏览量 |
---|---|---|
2019-01-01 | https://example.com/article | 224544 |
2019-01-01 | https://example.com/article1 | 656565 |
我如何使用第一个数据帧加入这个但匹配 URL
= URL
或 Origin
= URL
所以最终的结果是这样的:
网页浏览日期 | 浏览量 | 文章ID | 作者 | 类别 |
---|---|---|---|---|
2019-01-01 | 881109 | 001 | 作者姓名 | 政治 |
即 881109
是将与同一文章相关的 224544
和 656565
相加的结果
我想我正在寻找的是 sql 语法的等价物,例如:
LEFT JOIN ...`enter code here`
ON URL = URL
OR Origin = URL```
解决方法
您可以获得长格式的数据帧 1 (lineNumber:columnNumber
),这样 df1
和 Origin
都在同一列中,然后与第二个数据帧 (URL
}).
df2
数据
library(dplyr)
library(tidyr)
df1 %>%
pivot_longer(cols = c(URL,Origin),values_to = 'URL') %>%
inner_join(df2,by = 'URL') %>%
select(-name)
# ArticleID Author Category name URL PageviewDate Pageviews
# <int> <chr> <chr> <chr> <chr> <chr> <int>
#1 1 AuthorName Politics URL https://example.com/article1 2019-01-01 656565
#2 1 AuthorName Politics Origin https://example.com/article 2019-01-01 224544
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。