gpt4 book ai didi

r - 获取某列对于另一列的不同类别不适用的行数

转载 作者:行者123 更新时间:2023-12-04 12:25:43 24 4
gpt4 key购买 nike

我有一个数据表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

我想获取 Species 列的每个类别的行数,这样 Sepal.Length 列就不是 NA。最终结果如下所示(参见新列 no_rows)

> 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

我做了以下

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

但它不起作用。有人可以给我一个有效的 data.table 解决方案吗?

最佳答案

我们按“物种”分组,得到逻辑索引 (!is.na(Sepal.Length)) 的 sum 并赋值 (:=) 创建“no_rows”的输出。

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

关于r - 获取某列对于另一列的不同类别不适用的行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33826023/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com