【发布时间】:2018-01-19 08:54:09
【问题描述】:
从 SQL 开始,我希望我能够在 dplyr 中执行以下操作,这可能吗?
# R
tbl %>% mutate(n = dense_rank(Name, Email))
-- SQL
SELECT Name, Email, DENSE_RANK() OVER (ORDER BY Name, Email) AS n FROM tbl
PARTITION BY 也有等价物吗?
【问题讨论】:
-
喜欢这个
mtcars %>% mutate(n = dense_rank(interaction(cyl, hp)))? -
@docendodiscimus 太棒了,完全忘记了
interaction()我已经对这些值进行了哈希处理,但这会打乱顺序。使用PARTITION BY有什么简单的解决方案吗? -
我不知道那是什么
-
@CodeMonkey - 如果您想通过
PARTITION BY获得分组排名,您可以在 dplyr 中使用group by。 stackoverflow.com/questions/34967837/… -
@Jason 太棒了!它的工作。使用与
lex.order的交互几乎可以模拟 OVER(ORDER BY) 和 group_by 就像一个魅力。谢谢!
标签: r dplyr window-functions