数据抓取后,将内容与R中的原始数据合并
After data scraping, merging content with the original data in R
我从 csv 文件中的 URL 中进行了网络抓取,我正试图将这些结果附加到原始 csv 文件中。但是,我无法抓取一些损坏的链接;所以他们被编码为 NA.
因此,我的结果(网络抓取)和原始 CSV 文件的行数不同。 CSV文件多了几行,所以我的结果不兼容,无法添加。
我的原始 csv 文件有一些信息,例如发布者的日期和名称,我想根据这些信息附上我的结果(通过创建一个名为 full_article 的新列)。
我使用的行是在以下代码的行:
fox_data <- news_data %>% filter(media_name == "Fox News")
fox_urls <- fox_data[,4]
fox_url_xml4 <- apply(fox_urls, 1, readUrl)
nan_fox_url_xml4 <- fox_url_xml4[!is.na(fox_url_xml4)]
textScraper4Fox <- function(x) {
out <- tryCatch({
html_text(html_nodes (x, ".article-body")) %>%
str_replace_all("\n", "") %>%
str_replace_all("\t", "") %>%
paste(collapse = '')
}, error=function(cond) {
message("=====================================")
message(paste("Error Occured :", x))
message(cond)
message("=====================================")
return(NA)
}
)
return(out)
}
fox_article_text <- lapply(nan_fox_url_xml4, textScraper4Fox)
fox_article_text
#create new column "full article"
fox_data$full_article <- fox_article_text
错误说:
错误:分配的数据 fox_article_text
必须与现有数据兼容。
x 现有数据有 887 行。
x 分配的数据有 884 行。
ℹ 只有大小为 1 的向量被回收。
我想你可能想考虑加入,它通过在 id 相同的那些行添加新列来将新的 table 合并到旧的 table 20=] 在你的情况下):
library(tidyverse)
original_data <- tibble(id = c(1, 2), publisher = c("A", "B"), date = c("2021-11-23", "2021-11-23"))
new_data <- tibble(id = 1, full_article = "Lorem ipsum dolor")
original_data %>%
left_join(new_data)
#> Joining, by = "id"
#> # A tibble: 2 x 4
#> id publisher date full_article
#> <dbl> <chr> <chr> <chr>
#> 1 1 A 2021-11-23 Lorem ipsum dolor
#> 2 2 B 2021-11-23 <NA>
由 reprex package (v2.0.1)
于 2021-11-23 创建
我从 csv 文件中的 URL 中进行了网络抓取,我正试图将这些结果附加到原始 csv 文件中。但是,我无法抓取一些损坏的链接;所以他们被编码为 NA.
因此,我的结果(网络抓取)和原始 CSV 文件的行数不同。 CSV文件多了几行,所以我的结果不兼容,无法添加。
我的原始 csv 文件有一些信息,例如发布者的日期和名称,我想根据这些信息附上我的结果(通过创建一个名为 full_article 的新列)。 我使用的行是在以下代码的行:
fox_data <- news_data %>% filter(media_name == "Fox News")
fox_urls <- fox_data[,4]
fox_url_xml4 <- apply(fox_urls, 1, readUrl)
nan_fox_url_xml4 <- fox_url_xml4[!is.na(fox_url_xml4)]
textScraper4Fox <- function(x) {
out <- tryCatch({
html_text(html_nodes (x, ".article-body")) %>%
str_replace_all("\n", "") %>%
str_replace_all("\t", "") %>%
paste(collapse = '')
}, error=function(cond) {
message("=====================================")
message(paste("Error Occured :", x))
message(cond)
message("=====================================")
return(NA)
}
)
return(out)
}
fox_article_text <- lapply(nan_fox_url_xml4, textScraper4Fox)
fox_article_text
#create new column "full article"
fox_data$full_article <- fox_article_text
错误说:
错误:分配的数据 fox_article_text
必须与现有数据兼容。
x 现有数据有 887 行。
x 分配的数据有 884 行。
ℹ 只有大小为 1 的向量被回收。
我想你可能想考虑加入,它通过在 id 相同的那些行添加新列来将新的 table 合并到旧的 table 20=] 在你的情况下):
library(tidyverse)
original_data <- tibble(id = c(1, 2), publisher = c("A", "B"), date = c("2021-11-23", "2021-11-23"))
new_data <- tibble(id = 1, full_article = "Lorem ipsum dolor")
original_data %>%
left_join(new_data)
#> Joining, by = "id"
#> # A tibble: 2 x 4
#> id publisher date full_article
#> <dbl> <chr> <chr> <chr>
#> 1 1 A 2021-11-23 Lorem ipsum dolor
#> 2 2 B 2021-11-23 <NA>
由 reprex package (v2.0.1)
于 2021-11-23 创建