使用聚合函数查找每个组中不为零的最小值

Ada*_*min 2 r

我有以下数据集:

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
Run Code Online (Sandbox Code Playgroud)

我想在第二列的每组中的第四,第五和第六列中找到最小值(即,分别为1、2和3的三个组)。最小值不应为零。为此,我做了以下工作:

 aggregate(dataset[,4:6], list(dataset$V2), min)
Run Code Online (Sandbox Code Playgroud)

但这返回零。为了避免最小为零我该怎么办?

yar*_*ina 8

可能这就是您想要的:

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
Run Code Online (Sandbox Code Playgroud)

reprex软件包(v0.3.0)创建于2019-06-19