【问题标题】:After data scraping, merging content with the original data in R数据抓取后,将内容与R中的原始数据合并
【发布时间】:2022-01-01 16:15:57
【问题描述】:

我从 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 的向量。

【问题讨论】:

    标签: r dataframe merge


    【解决方案1】:

    我认为您可能需要考虑加入,它通过在 id 相同的那些行中添加新列来将新表合并到旧表(在您的情况下可能是一个 url):

    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 日创建

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-27
      • 2018-10-22
      • 2021-12-09
      • 2019-01-09
      相关资源
      最近更新 更多