如何使用data.table删除表中未使用的级别?

时间:2015-03-05 15:42:53

标签: r data.table

考虑以下data.table

x <- data.table(
          x=sample(letters[1:5],10,rep=T), 
          y=factor(sample(letters[1:5],10,rep=T), levels=letters))

使用data.table s时会出现这种情况,其中一些因子字段具有未使用的变量。

现在,如果我们使用下表:

table(x)

显示所有未使用级别的巨型表格。 在[{1}}方法或table中有没有办法做到这一点?

我知道以下是可能的:

data.table

但这没用,因为我不想将每个子表保存到不同的变量。

1 个答案:

答案 0 :(得分:5)

您可以按如下方式使用droplevel

x[,y:=droplevels(y)]

这会通过引用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