如何从两个数据框中删除不匹配的数据,以在 R 中创建一个新的数据框
How to remove unmatched data from two data frames, to create a new data frame in R
我正在创建一个图表,将每个国家/地区的预期寿命年龄和领取国家养老金的年龄相关联。我使用网络抓取包从 2 个维基百科页面抓取了 2 个数据集。
其中一个数据集包含 "Country" 列,另一个数据集包含 "Country and regions" 列。这是一个问题,因为两个数据集都需要合并,但由于 "Country and regions" 列中的区域而不平衡。
为了解决这个问题,我需要在合并数据集之前删除 "Country and regions" 中的区域,因此它是平衡的。我需要从 "Country and regions" 中找到与 "Country" 不匹配的数据,将其删除,并使用 2 个数据集创建一个数据框。
library(xml2)
library(rvest)
library(stringr)
urlLifeExpectancy <- "https://en.wikipedia.org/wiki/List_of_countries_by_life_expectancy"
extractedLifeData = urlLifeExpectancy %>%
read_html() %>%
html_node(xpath = '//*[@id="mw-content-text"]/div/table[1]') %>%
html_table(fill = TRUE)
urlPensionAge <- "https://en.wikipedia.org/wiki/Retirement_age#Retirement_age_by_country"
extractedPensionData = urlPensionAge %>%
read_html() %>%
html_node(xpath = '//*[@id="mw-content-text"]/div/table[3]') %>%
html_table(fill = TRUE)
我们可以通过从两个数据集中选择我们需要的列来使用 merge
merge(extractedLifeData[c(1, 5, 7)], extractedPensionData[1:3],
by.y = "Country", by.x = "Country and regions")
或使用 dplyr
中的 inner_join
library(dplyr)
extractedLifeData %>% select(1, 5, 7) %>%
inner_join(extractedPensionData %>% select(1:3),
by = c("Country and regions" = "Country"))
我们可以使用来自 data.table
的连接
library(data.table)
setDT(extractedLifeData[c(1, 5, 7)][extractedPensionDate[1:3],
on = .(Country = `Country and regions`)]
我正在创建一个图表,将每个国家/地区的预期寿命年龄和领取国家养老金的年龄相关联。我使用网络抓取包从 2 个维基百科页面抓取了 2 个数据集。
其中一个数据集包含 "Country" 列,另一个数据集包含 "Country and regions" 列。这是一个问题,因为两个数据集都需要合并,但由于 "Country and regions" 列中的区域而不平衡。
为了解决这个问题,我需要在合并数据集之前删除 "Country and regions" 中的区域,因此它是平衡的。我需要从 "Country and regions" 中找到与 "Country" 不匹配的数据,将其删除,并使用 2 个数据集创建一个数据框。
library(xml2)
library(rvest)
library(stringr)
urlLifeExpectancy <- "https://en.wikipedia.org/wiki/List_of_countries_by_life_expectancy"
extractedLifeData = urlLifeExpectancy %>%
read_html() %>%
html_node(xpath = '//*[@id="mw-content-text"]/div/table[1]') %>%
html_table(fill = TRUE)
urlPensionAge <- "https://en.wikipedia.org/wiki/Retirement_age#Retirement_age_by_country"
extractedPensionData = urlPensionAge %>%
read_html() %>%
html_node(xpath = '//*[@id="mw-content-text"]/div/table[3]') %>%
html_table(fill = TRUE)
我们可以通过从两个数据集中选择我们需要的列来使用 merge
merge(extractedLifeData[c(1, 5, 7)], extractedPensionData[1:3],
by.y = "Country", by.x = "Country and regions")
或使用 dplyr
inner_join
library(dplyr)
extractedLifeData %>% select(1, 5, 7) %>%
inner_join(extractedPensionData %>% select(1:3),
by = c("Country and regions" = "Country"))
我们可以使用来自 data.table
library(data.table)
setDT(extractedLifeData[c(1, 5, 7)][extractedPensionDate[1:3],
on = .(Country = `Country and regions`)]