删除 data.table 之前/中字符中的值并将它们放在不同的列中

Removing values in a character before / in data.table and placing those in a different column

我有一个data.table dt

> dt <- data.table(ch = c("573427/02", "01/17", "030845/84", "15/03", "01", "02", "03", "56/03"), seq = c("23", "32456", "13", "657489", "879605", "564734", "657432", "657431"))
> dt
          ch    seq
1: 573427/02     23
2:     01/17  32456
3: 30845/84     13
4:     15/03 657489
5:        01 879605
6:        02 564734
7:        03 657432
8:     56/03 657431

我想清理数据中的 chseq 列。

1) 我想删除 ch 中的 / 和之前的值,并且只想保留 /.

之后的字符

2) 如果没有 / present 那么它应该保持原样(记录 5, 6,7 不得更改)。

3) 如果 ch 中 / 之前的字符数是 5 或 6,则将该值放入 seq.

我的结果一定是这样的。

> dt
              ch    seq
    1:        02 573427
    2:        17  32456
    3:        84  30845
    4:        03 657489
    5:        01 879605
    6:        02 564734
    7:        03 657432
    8:        03 657431

我如何在 Rdata.table 中执行此操作

使用:

dt[grepl('/',ch) & nchar(sub('/.*','',ch)) %in% 5:6, seq := sub('/.*','',ch)
   ][, ch := sub('.*/','',ch)][]

给出:

   ch    seq
1: 02 573427
2: 17  32456
3: 84 030845
4: 03 657489
5: 01 879605
6: 02 564734
7: 03 657432
8: 03 657431