一元运算符的参数无效(在字符列上)
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 创建
假设我有以下 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 创建