【发布时间】:2017-11-19 07:56:16
【问题描述】:
我正在尝试使用 data.table 重新编码变量。谷歌搜索了将近 2 个小时,但找不到答案。
假设我有一个 data.table 如下:
DT <- data.table(V1=c(0L,1L,2L),
V2=LETTERS[1:3],
V4=1:12)
我想重新编码 V1 和 V2。对于 V1,我想将 1s 重新编码为 0,将 2s 重新编码为 1。 对于 V2,我想将 A 重新编码为 T,B 重新编码为 K,C 重新编码为 D。
如果我使用dplyr,就很简单了。
library(dplyr)
DT %>%
mutate(V1 = recode(V1, `1` = 0L, `2` = 1L)) %>%
mutate(V2 = recode(V2, A = "T", B = "K", C = "D"))
但我不知道如何在 data.table 中执行此操作
DT[V1==1, V1 := 0]
DT[V1==2, V1 := 1]
DT[V2=="A", V2 := "T"]
DT[V2=="B", V2 := "K"]
DT[V2=="C", V2 := "D"]
以上是我认为最好的代码。但必须有更好、更有效的方法来做到这一点。
编辑
我更改了重新编码 V2 的方式,以使我的示例更通用。
【问题讨论】:
-
我认为您的
V2可能必须是字符,因为您想将"C"更改为"D"对吗?虽然我可能弄错了你想如何重新编码V2 -
@MikeH。是的,
V2可能必须是字符。
标签: r data.table recode