【问题标题】:Strip off tracking from URL using R使用 R 从 URL 中剥离跟踪
【发布时间】:2018-07-25 15:47:47
【问题描述】:

我有一个数据框,其中有一列 URL,我想从中删除第一个问号之后的所有内容。有些 URL 没有问号,我希望这些保持不变。简而言之,我想去掉所有的跟踪。这是一个示例网址。

https://www.dummy.com/2017/11/29/four-questions-we-have-about-stuff/?utm_source=exacttarget&utm_medium=newsletter&utm_term=dummydotcom-dummycomnewsletter&utm_content=na-readblog-blogpost&utm_campaign=dummy

这是我正在寻找的结果。

https://www.dummy.com/2017/11/29/four-questions-we-have-about-stuff/

【问题讨论】:

    标签: r string url substring


    【解决方案1】:

    假设您的数据框名为df,其中有一列名为url

    df$url <- sub('\\?.*', '', df$url)
    

    【讨论】:

      【解决方案2】:

      strsplit:

      url <- "https://www.dummy.com/2017/11/29/four-questions-we-have-about-stuff/?utm_source=exacttarget&utm_medium=newsletter&utm_term=dummydotcom-dummycomnewsletter&utm_content=na-readblog-blogpost&utm_campaign=dummy"
      
      result <- strsplit(url, "\\?")[[1]][1]
      

      输出:

      > result
      [1] "https://www.dummy.com/2017/11/29/four-questions-we-have-about-stuff/"
      

      这是一个在向量而不是单个字符串上使用它的示例:

      strings <- c("here?string", "another?string", "stringnoquestion", "one?more")
      
      > sapply(strsplit(strings, "\\?"), function(x) x[1])
      [1] "here"             "another"          "stringnoquestion" "one"
      

      strsplit 返回一个列表,因为它被编写用于向量和奇异元素。因此,在第一个示例中,[[1]] 正在访问列表的第一个元素,然后 [1] 正在访问该列表的第一个元素,即 ? 之前的 url。

      这是第一个分解为步骤的示例:

      # Returns a list of length one
      > strsplit(url, "\\?")
      [[1]]
      [1] "https://www.dummy.com/2017/11/29/four-questions-we-have-about-stuff/"                                                                    
      [2] "utm_source=exacttarget&utm_medium=newsletter&utm_term=dummydotcom-dummycomnewsletter&utm_content=na-readblog-blogpost&utm_campaign=dummy"
      
      # Each element of the list is a vector
      > strsplit(url, "\\?")[[1]]
      [1] "https://www.dummy.com/2017/11/29/four-questions-we-have-about-stuff/"                                                                    
      [2] "utm_source=exacttarget&utm_medium=newsletter&utm_term=dummydotcom-dummycomnewsletter&utm_content=na-readblog-blogpost&utm_campaign=dummy"
      
      # The first element of that vector
      > strsplit(url, "\\?")[[1]][1]
      [1] "https://www.dummy.com/2017/11/29/four-questions-we-have-about-stuff/"
      

      【讨论】:

      • 谢谢@efbbrown。最后能解释一下[[1]][1]的作用吗?
      • 当然。我在问题中添加了更多细节来解释。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多