我有以下数据集:

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

我想在第二列的每组中的第四,第五和第六列中找到最小值(即,三组分别是1、2和3)。最小值不应为零。为此,我做了以下工作:
 aggregate(dataset[,4:6], list(dataset$V2), min)

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

最佳答案

可能这就是您想要的:

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 package(v0.3.0)创建于2019-06-19

关于r - 使用聚合函数查找每个组中不为零的最小值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56666121/

10-12 23:26