R 获取另一列的不同类别中某列不为NA的行数

R 获取另一列的不同类别中某列不为NA的行数,r,data.table,R,Data.table,我有一个data.tableqq。以下是dput structure(list(Sepal.Length = c(NA, NA, 4.7, NA, 5), Sepal.Width = c(3.5, NA, 3.2, 3.1, 3.6), Petal.Length = c(1.4, 1.4, 1.3, 1.5, 1.4), Petal.Width = c(0.2, 0.2, 0.2, 0.2, 0.2), Species = c("a", "a", "b", "b",

我有一个data.table
qq
。以下是
dput

    structure(list(Sepal.Length = c(NA, NA, 4.7, NA, 5), Sepal.Width = c(3.5, 
NA, 3.2, 3.1, 3.6), Petal.Length = c(1.4, 1.4, 1.3, 1.5, 1.4), 
    Petal.Width = c(0.2, 0.2, 0.2, 0.2, 0.2), Species = c("a", 
    "a", "b", "b", "b")), .Names = c("Sepal.Length", "Sepal.Width", 
"Petal.Length", "Petal.Width", "Species"), row.names = c(NA, 
-5L), class = c("data.table", "data.frame"), .internal.selfref = <pointer: 0x0000000011c90788>)

> qq
   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1:           NA         3.5          1.4         0.2       a
2:           NA          NA          1.4         0.2       a
3:          4.7         3.2          1.3         0.2       b
4:           NA         3.1          1.5         0.2       b
5:          5.0         3.6          1.4         0.2       b
我做了以下几件事

qq[, no_rows:= nrow(qq[is.na(Sepal.Length) == F, ]), .(Species)]

但它不起作用。有人能给我一个有效的数据表解决方案吗?

我们按“种类”分组,得到逻辑索引(
!is.na(Sepal.Length)
)的
和,并分配(
:=
)输出以创建“无行”

qq[, no_rows := sum(!is.na(Sepal.Length)) , by = Species]
qq
#    Sepal.Length Sepal.Width Petal.Length Petal.Width Species no_rows
#1:           NA         3.5          1.4         0.2       a       0
#2:           NA          NA          1.4         0.2       a       0
#3:          4.7         3.2          1.3         0.2       b       2
#4:           NA         3.1          1.5         0.2       b       2
#5:          5.0         3.6          1.4         0.2       b       2

如果我必须按两列进行分组怎么办?说
物种
花瓣宽度
?@user3664020,通过。
qq[, no_rows := sum(!is.na(Sepal.Length)) , by = Species]
qq
#    Sepal.Length Sepal.Width Petal.Length Petal.Width Species no_rows
#1:           NA         3.5          1.4         0.2       a       0
#2:           NA          NA          1.4         0.2       a       0
#3:          4.7         3.2          1.3         0.2       b       2
#4:           NA         3.1          1.5         0.2       b       2
#5:          5.0         3.6          1.4         0.2       b       2