我有以下数据集:
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)
但这返回零。为了避免最小为零我该怎么办?
可能这就是您想要的:
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