【问题标题】:Calculate Occurrence of String based on Group in R基于R中的组计算字符串的出现
【发布时间】:2017-03-14 15:43:51
【问题描述】:

这是我的示例数据集。

Singer <- c("A","B","C","A","B","D")
Rank <- c(1,2,3,3,2,1)
data <- data_frame(Singer,Rank)

我想计算每个歌手的平均排名。我使用了如下的“总结”功能。

summarise(group_by(data,Singer),mean.rank = mean(Rank))

在这里,我想添加一列,表明歌手出现了多少次。在此示例中,“A”和“B”出现了两次,而“C”和“D”出现了一次。

我尝试使用“table(unlist())”。但它在 summarise 函数中不起作用。

【问题讨论】:

    标签: r count data-manipulation


    【解决方案1】:

    dplyr 解决方案

    data
      Singer Rank
    1      A    1
    2      B    2
    3      C    3
    4      A    3
    5      B    2
    6      D    1
    library(tidyverse)
    data %>% group_by(Singer) %>% summarize(mean_rank=mean(Rank),count=n())
    # A tibble: 4 × 3
      Singer mean_rank count
      <fctr>     <dbl> <int>
    1      A         2     2
    2      B         2     2
    3      C         3     1
    4      D         1     1
    

    【讨论】:

    • 优秀。如果是正确的,也请选择它作为最佳答案。
    【解决方案2】:

    data.table 解决方案

       library(data.table)
       setDT(data)[, list(mean_rank = mean(Rank), count = .N), by = 'Singer']
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-06
      • 1970-01-01
      • 2013-07-24
      • 2011-04-29
      • 2014-04-24
      相关资源
      最近更新 更多