数据抓取后,将内容与R中的原始数据合并

After data scraping, merging content with the original data in R

我从 c​​sv 文件中的 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 创建