在dplyr窗口函数中使用多个列?

时间:2018-01-19 08:54:09

标签: r dplyr window-functions

从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

的等价物

1 个答案:

答案 0 :(得分:-1)

我确实遇到了这个问题,这是我的解决方案:

如果找不到任何支持多个变量排序的函数,建议您使用paste()从左到右按优先级将它们连接起来。

下面是代码示例:

customer_data_test %>%
  group_by(customer_id, merchant_name) %>%
  mutate(rank = dense_rank(paste(as.character(date), order_code))) %>%
  arrange(customer_id, merchant_name, date, order_code) %>%
  view()