首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Mutate对特定列进行排名

使用Mutate对特定列进行排名
EN

Stack Overflow用户
提问于 2018-05-03 23:09:29
回答 1查看 278关注 0票数 0

对于dplyr来说,我还是个新手。我有一个组织的data.frame,每个商店的名称和来源(由2018年的结果组成)组成了观察结果。这些变量包括总收入、数量、客户体验得分以及其他一些变量。

我想对data.frame中的每个类别进行排名,并创建新的观察结果。所有变量将按降序排列,但客户体验和另一列将按升序排列。我想称之为“排名”的来源。

代码语言:javascript
复制
store <- c("NYC", "Chicago", "Boston")
source <- c("2018", "2018", "2018")
revenue <- c(10000, 50000, 2000)
quantity <- c(100, 50, 20)
satisfaction <- c(3, 2, 5)
table <- cbind(store, source, revenue, quantity, satisfaction)

我可以使用mutate获得所需的内容,但我必须手动为每个新列命名。我相信有一种更有效的方法来对这些值进行排序!

这是我最初做的事情:

代码语言:javascript
复制
table <- table %>%
mutate(revenue_rank = rank(-revenue), quantity_rank = rank(-quantity), satisfaction_rank = rank(satisfaction))
EN

回答 1

Stack Overflow用户

发布于 2018-05-04 00:02:53

通常,如果您必须在数据框中重复执行某些操作,例如计算等级,则可能需要对长数据进行整形。还要注意,从cbind得到的是一个矩阵,而不是数据帧--可能不是您想要的,因为这意味着数值变量实际上是字符。使用data.framedata_frame (对于cbind )而不是tibble。

我在这里做的是收集到一个很长的数据框架中,按衡量标准(收入、数量或满意度)分组,然后根据价值给出排名,记住你想要不同的满意度和其他衡量标准。

代码语言:javascript
复制
library(tidyverse)

store <- c("NYC", "Chicago", "Boston")
source <- c("2018", "2018", "2018")
revenue <- c(10000, 50000, 2000)
quantity <- c(100, 50, 20)
satisfaction <- c(3, 2, 5)

df <- data_frame(store, source, revenue, quantity, satisfaction)

df %>%
    gather(key = measure, value = value, revenue:satisfaction) %>%
    group_by(measure) %>%
    mutate(rank = ifelse(measure == "satisfaction", rank(value), rank(-value))) %>%
    ungroup() %>%
    select(-value) %>%
    mutate(measure = paste(measure, "rank", sep = "_")) %>%
    spread(key = measure, value = rank)
#> # A tibble: 3 x 5
#>   store   source quantity_rank revenue_rank satisfaction_rank
#>   <chr>   <chr>          <dbl>        <dbl>             <dbl>
#> 1 Boston  2018               3            3                 3
#> 2 Chicago 2018               2            1                 1
#> 3 NYC     2018               1            2                 2

reprex package创建于2018-05-04 (v0.2.0)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50158380

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档