R语言 计算数据表中的行数时包括零计数的因子水平

uoifb46i  于 2023-05-20  发布在  其他
关注(0)|答案(2)|浏览(132)

我按组计算行数,其中分组变量是一个因子。我还需要在数据中未表示的因素水平,即有零行,要包含在结果中。
一个包含变量“x”的小数据示例,一个水平为c("a", "b", "c")的因子

library(data.table)
DT = data.table(x = factor(rep(c("b", "a", "c"), each = 3)))

数据被过滤,例如删除x == "c"的所有行,并计算每组的行数。然而,等级“c”的零计数未在结果中示出:

DT[x != "c"][, .N, by = x]
        x     N
   <fctr> <int>
1:      b     3
2:      a     3

所需结果还应包括“c”的零计数:

x     N
   <fctr> <int>
1:      b     3
2:      a     3
3:      c     0 # <--

有什么方法可以得到这个输出吗?

c3frrgcw

c3frrgcw1#

使用连接语法

DT[x != "c"][levels(x), on = "x", .N, by = .EACHI]

#         x     N
#    <char> <int>
# 1:      a     3
# 2:      b     3
# 3:      c     0
pgky5nke

pgky5nke2#

你可以试试-

library(data.table)
remove_vars <- c("c")

DT[, if(all(x %in% remove_vars)) 0L else .N, by = x]

#   x V1
#1: b  3
#2: a  3
#3: c  0

相关问题