一元运算符的参数无效(在字符列上)

Invalid argument to unary operator (on character column)

假设我有以下 df

df <- data.table(group_id = c(1,1,2,2)
                 , week_no = c('2019-01', '2019-02', '2019-03', '2019-04')
                 ); df

   group_id week_no
1:        1 2019-01
2:        1 2019-02
3:        2 2019-03
4:        2 2019-04

分组 frank 工作正常:

df[, dummy := frankv(week_no), group_id]; df

   group_id week_no dummy
1:        1 2019-01     1
2:        1 2019-02     2
3:        2 2019-03     1
4:        2 2019-04     2

但是,如果我想按降序排列:

df[, dummy := frankv(-date), group_id]; df

我收到错误:

Error in -date : invalid argument to unary operator

我想这与列 week_no 的 class 是 character 有关。除了按升序排列日期,然后按降序排列虚拟列之外,还有其他解决方法吗?谢谢。

这是您要找的吗?

library(data.table)

df[, dummy := frankv(week_no, order = -1L), group_id][]
#>    group_id week_no dummy
#> 1:        1 2019-01     2
#> 2:        1 2019-02     1
#> 3:        2 2019-03     2
#> 4:        2 2019-04     1

reprex package (v0.3.0)

于 2021-10-25 创建