首页 > 解决方案 > 使用聚合函数找到每组不为零的最小值

问题描述

我有以下数据集:

6b9691fa    1   0   2   1   4
6b9691fa    1   1   -1  1   5
6b9691fa    1   2   3   0   4
6b9691fa    2   0   1   5   3
6b9691fa    2   1   0   5   3
6b9691fa    2   2   3   5   3
6b9691fa    3   0   10  1   9
6b9691fa    3   1   10  0   9
6b9691fa    3   2   10  1   9

我想在第 2 列的每组(即 1、2 和 3 三个组)的第 4、第 5 和第 6 列中找到最小值。最小值不应为零。为此,我执行了以下操作:

 aggregate(dataset[,4:6], list(dataset$V2), min)

但这返回零。我能做些什么来避免最低限度的零?

标签: r

解决方案


可能这就是你想要的:

dataset <- read.table(text = '6b9691fa    1   0   2   1   4
6b9691fa    1   1   -1  1   5
6b9691fa    1   2   3   0   4
6b9691fa    2   0   1   5   3
6b9691fa    2   1   0   5   3
6b9691fa    2   2   3   5   3
6b9691fa    3   0   10  1   9
6b9691fa    3   1   10  0   9
6b9691fa    3   2   10  1   9')

aggregate(x = dataset[, 4:6],
          by = list(dataset[, 2]),
          FUN = function(t) min(t[t != 0]))
#>   Group.1 V4 V5 V6
#> 1       1 -1  1  4
#> 2       2  1  5  3
#> 3       3 10  1  9

reprex 包(v0.3.0)于 2019 年 6 月 19 日创建


推荐阅读