微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

R:在分组列中变异非零最小值

如何解决R:在分组列中变异非零最小值

我正在尝试使用 dplyr 计算组内列的非零最小值。我已经看到了一些类似的问题,但是,似乎都没有。让我们看一个带有 iris 的示例。我想创建一个新列:min_length,每个物种的最小踏板长度大于 1(我没有在这个例子中使用 0 来拟合数据集)。我试过了:

iris <- iris %>% group_by(Species) %>% mutate(min_length = min(Petal.Length>1))

但我明白了:

> iris$min_length
  [1] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1
 [58] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
[115] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

此外,我尝试了 Find minimum non-zero value in a column R 中建议的答案:

iris$min_length <- iris %>% group_by(Species) %>% min(iris[iris$Sepal.Length>1,"Sepal.Length"]) 

但我明白了:

FUN(X[[i]],...) 中的错误:仅在具有所有 数值变量

预期的输出是:

iris$min_length
  [1] 1.1 1.1 1.1 1.1 1.1 1.1 1.1 1.1 1.1 1.1 1.1 1.1 1.1 1.1 1.1 1.1 1.1 1.1 1.1 1.1 1.1 1.1 1.1 1.1 1.1 1.1 1.1 1.1
 [29] 1.1 1.1 1.1 1.1 1.1 1.1 1.1 1.1 1.1 1.1 1.1 1.1 1.1 1.1 1.1 1.1 1.1 1.1 1.1 1.1 1.1 1.1 3.0 3.0 3.0 3.0 3.0 3.0
 [57] 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0
 [85] 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5
[113] 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5
[141] 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5

有什么想法吗?

解决方法

差点就搞定了

library(tidyverse)

iris %>% group_by(Species) %>% mutate(min_length = min(Petal.Length[Petal.Length > 1]))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。