请考虑以下事项data.table:
x <- data.table(
x=sample(letters[1:5],10,rep=T),
y=factor(sample(letters[1:5],10,rep=T), levels=letters))
Run Code Online (Sandbox Code Playgroud)
data.table在使用某些因子字段具有未使用变量的s时,会出现这种情况.
现在,如果我们使用下表:
table(x)
Run Code Online (Sandbox Code Playgroud)
一张包含所有未使用级别的巨型桌子出现了.方法中有没有table方法或data.table这样做?
我知道以下是可能的:
x$y <- factor(x$y)
Run Code Online (Sandbox Code Playgroud)
但这没用,因为我不想将每个子表保存到不同的变量.
您可以使用droplevel如下
x[,y:=droplevels(y)]
Run Code Online (Sandbox Code Playgroud)
这y通过引用覆盖droplevels(y)
结果是
> table(x)
y
x b c d e
a 1 1 1 2
b 0 1 0 0
c 1 0 0 0
d 1 0 0 0
e 0 0 2 0
Run Code Online (Sandbox Code Playgroud)