【发布时间】:2018-05-03 15:09:28
【问题描述】:
我是dplyr 的新手。我有一个data.frame,每个商店名称和来源(由 2018 年的结果组成)组成了观察结果。变量是总收入、数量、客户体验分数等。
我想对data.frame 中的每个类别进行排名并创建新的观察结果。所有变量将按降序排列,但客户体验和另外一列将按升序排列。我想称之为“等级”的来源。
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 获得所需的内容,但我必须手动命名每个新列。我确信有一种更有效的方法来对这些值进行排名!
这是我最初做的:
table <- table %>%
mutate(revenue_rank = rank(-revenue), quantity_rank = rank(-quantity), satisfaction_rank = rank(satisfaction))
【问题讨论】:
-
你尝试过什么?另外,提供一个可重现的例子。
-
“排名”是指排序吗?
-
我可以使用以下代码,但它会创建额外的列,而不是在给定行的每个类别中进行排名。
-
请提供您的预期输出
-
预期输出将为每个商店名称创建一个额外的行,源列显示“排名”。每个变量都有上面列出的等级代码的结果。如果无法通过这种方式实现,是否有一种更简单的方法来使用 mutate_all 来为排名创建额外的列,其中每列基于列名命名,后面带有“_rank”,所有列都按降序排列客户体验除外?