Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 不要在data.table中删除by=2列的空级别_R_Data.table - Fatal编程技术网

R 不要在data.table中删除by=2列的空级别

R 不要在data.table中删除by=2列的空级别,r,data.table,R,Data.table,我需要像这样显示所有级别: require(data.table) x <- data.table(x=runif(3), group=factor(c('a','b','a'), levels=c('a','b','c')),group2=factor(c('u','f','l'))) data.frame(xtabs(~group+group2,x)) group group2 Freq a f 0 b f 1

我需要像这样显示所有级别:

require(data.table)
x <- data.table(x=runif(3), group=factor(c('a','b','a'), 
  levels=c('a','b','c')),group2=factor(c('u','f','l')))

data.frame(xtabs(~group+group2,x))

 group group2 Freq
     a      f    0
     b      f    1
     c      f    0
     a      l    1
     b      l    0
     c      l    0
     a      u    1
     b      u    0
     c      u    0
但是不起作用。 一些想法?
提前感谢

如果您按要分组的两列进行键入,则可以使用级别在
CJ
中创建所有组合

setkeyv(x, c('group','group2'))
x[CJ(levels(group),levels(group2)), .N]

#    group group2 N
# 1:     a      f 0
# 2:     a      l 1
# 3:     a      u 1
# 4:     b      f 1
# 5:     b      l 0
# 6:     b      u 0
# 7:     c      f 0
# 8:     c      l 0
# 9:     c      u 0

+1我经常发现自己在
表格
之后使用
data.frame
。如果你想要优雅或易读的代码,你可以定义这些函数的组成:
myxtabs感谢mnel这正是我想要做的并且工作完美!!。
setkeyv(x, c('group','group2'))
x[CJ(levels(group),levels(group2)), .N]

#    group group2 N
# 1:     a      f 0
# 2:     a      l 1
# 3:     a      u 1
# 4:     b      f 1
# 5:     b      l 0
# 6:     b      u 0
# 7:     c      f 0
# 8:     c      l 0
# 9:     c      u 0