【问题标题】:Sort by occurance or freq in data frame in R? [duplicate]按R中数据框中的出现或频率排序? [复制]
【发布时间】:2018-01-19 05:35:19
【问题描述】:

我现在有一个包含 url 列表的数据框,我正在尝试根据频率查找前 10 个 url。这就是我所拥有的,

+------------+ |网址 | +------------+ |google.com | |linkedin.com| |雅虎网| |google.com | |雅虎网| +------------+ 我试图添加一个频率列,但我似乎无法得到它。我试过 count(df,"url") 但它只给了我没有这样的网址的频率, +----+ |频率| +----+ |2 | |1 | |2 | |2 | |2 | +----+

我能知道我怎样才能得到这样的数据框,

+---------------+------------+ |网址 |频率 | +---------------+------------+ |google.com | 2 | |linkedin.com | 1 | |雅虎网| 2 | |google.com | 2 | |雅虎网| 2 | +---------------+------------+

我还需要按前 10 名排序吗?

【问题讨论】:

    标签: r dataframe


    【解决方案1】:

    表格返回网址的频率。然后你可以对它进行降序排序并选择前 10 个。

    sort(table(df$urls), decreasing = T)[1:10]
    

    如果你想使用 url 名称

    names(sort(table(df$urls), decreasing = T)[1:10])
    

    【讨论】:

      【解决方案2】:

      这是tidyverse 解决方案。使用 group_byn 获取每个 url 的计数。然后使用arrange 对行进行排序。

      library('tidyverse')
      
      df <- tibble(urls = c('google.com ', 'linkedin.com', 'yahoo.com ', 'google.com ', 'yahoo.com'))
      
      df %>%
        group_by(urls) %>%
        mutate(freq = n()) %>%
        arrange(desc(freq)) %>%
        head(10)
      #> # A tibble: 5 x 2
      #> # Groups:   urls [4]
      #>           urls  freq
      #>          <chr> <int>
      #> 1   google.com     2
      #> 2   google.com     2
      #> 3 linkedin.com     1
      #> 4    yahoo.com     1
      #> 5    yahoo.com     1
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-06-24
        • 2018-09-27
        • 1970-01-01
        • 2021-06-10
        • 2012-11-02
        • 1970-01-01
        • 2014-06-19
        • 2020-01-24
        相关资源
        最近更新 更多