【问题标题】:How to extract only 2 values in dataframe column per row where each value is separated by a ',' in R dataframe?如何在每行的数据帧列中仅提取 2 个值,其中每个值在 R 数据帧中由 \',\' 分隔?
【发布时间】:2022-11-30 07:13:49
【问题描述】:

我有一个我创建的 df(参考图像),它显示了每个发布者对另一个发布者的所有组合的聚合,然后根据所述对进行计算。

我想提取每对仅包含 2 个发布者和与该对相关的所有其他字段值的不同对(例如亚马逊、CBS,但两次,因为第 10 个月有一个,第 11 个月有一个,依此类推。

我如何提取它或应用一些 dplyr 函数来只提取那些?正在考虑在管道中使用正则表达式函数,但不确定该怎么做。

预期产出

Publisher    |   month_grp
Amazon, CBS       10
Amazon, CBS       11
Amazon, CW        10
Amazon, CW        11
Amazon, ESPN      10
Amazon, ESPN      11

【问题讨论】:

    标签: r regex dplyr


    【解决方案1】:

    我认为您希望 publishers 列中的行只有一个逗号。你可以得到这些使用

    df[grep('^[^,]+,[^,]+$', df$publishers,]
    

    【讨论】:

      【解决方案2】:

      与几秒钟前发布的答案类似,但使用dplyr::filterstringr::str_detect

      library(tidyverse)
      
      tribble(~ Publisher, ~month_grp,
              "AWS, CBS", 4,
              "AWS, CBS, CW", 2,
              "AWS, ESPN", 6,
              "AWS, CBS, ESPN", 2,
              "AWS, CW", 4,
              "AWS, ESPN, CBS", 4,
              ) |> 
        filter(str_detect(Publisher, "^\w*, \w*$"))
      #> # A tibble: 3 × 2
      #>   Publisher month_grp
      #>   <chr>         <dbl>
      #> 1 AWS, CBS          4
      #> 2 AWS, ESPN         6
      #> 3 AWS, CW           4
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-01
        • 2018-05-03
        • 2021-11-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多