【发布时间】:2014-07-02 00:44:52
【问题描述】:
我有一个数据表,其中有一列包含十六进制数据;我想将其转换为二进制并使用二进制数据创建新列。示例代码,
library(data.table)
library(BMS)
# Create a data table
dt <- data.table(Z=c(1:4),
HDATA=c("1234","5678","9ACB","DEF0"))
# Convert the HDATA column to binary
Bin_names <- sapply(c(15:0), function(x) paste0('C',x))
dt[,Bin_names:=hex2bin(as.character(HDATA)),]
但是这给了我以下错误信息,
警告信息:
在[.data.table(dt, , :=(Bin_names, hex2bin(as.character(HDATA))), :
提供 76 个项目分配给列“Bin_names”的 4 个项目(72 个未使用)
修改后的数据表是这样的,
> dt
Z HDATA Bin_names
1: 1 1234 0
2: 2 5678 0
3: 3 9ACB 0
4: 4 DEF0 1
>
我如何得到这个给我一个看起来像这样的输出,
Z HDATA C15 C14 C13 C12 C11 C10 C9 C8 C7 C6 C5 C4 C3 C2 C1 C0
1: 1 1234 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0
2: 2 5678 0 1 0 1 0 0 1 1 0 1 1 1 1 0 0 0
3: 3 9ABC 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0
4: 4 DEF0 1 1 0 1 1 1 1 0 1 1 1 1 0 0 0 0
我的实际数据表有大约 1000 万行,所以我正在寻找一种快速的方法来执行此操作。 谢谢,
【问题讨论】:
标签: r data.table