【问题标题】:Count 5 highest values of a variable计算一个变量的 5 个最高值
【发布时间】:2014-03-05 21:28:37
【问题描述】:

我正在使用 R 来尝试获取每个用户最喜欢的 5 首歌曲,他们播放的歌曲最多。我目前有计算播放次数最多的歌曲的代码,但我想知道如何为该用户获取接下来播放次数最多的 4 首歌曲,假设每个用户至少播放了 5 首歌曲。我是否必须从数据集中消除最高值并再次运行它,还是有更简单的方法?

write.csv(group_by(mydata,userId) %.%
summarise(favourite=max(playCount)), file="test.csv")

数据示例如下所示

userId      songId            playCount
A           568r              85
A           711g              18
C           34n               18
E           454j              65
D           663a              72
B           35d               84
A           34c               72
A           982s              65
E           433f              11
A           565t              7

【问题讨论】:

标签: r max


【解决方案1】:

你可以使用:

rev(sort(x))[1:n]

获取向量的顶部n 值。如果您想要顶级 n 唯一值,只需添加对 unique() 的调用

rev(sort(unique(x)))[1:n]

【讨论】:

  • 我会试试的。谢谢!
  • 使用partial 参数到sort.intsort 调用)可能会加快速度。此外,您可以设置decreasing=TRUE,而不是使用rev,或者只使用tail
【解决方案2】:

另一种方式……

library(dplyr)

mydata2 <- group_by(mydata, userId) %.%
              arrange(userId, -playCount) %.%
              mutate(rank = rank(-playCount)) %.%

              # remove `rank > 1` if you want to keep the first song
              filter(rank > 1, rank < 6) %.%

              select(userId, songId, playCount)

【讨论】:

    猜你喜欢
    • 2023-04-02
    • 1970-01-01
    • 2015-09-03
    • 2022-12-17
    • 2015-02-23
    • 2021-12-30
    • 1970-01-01
    • 1970-01-01
    • 2021-06-14
    相关资源
    最近更新 更多