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