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

Posted

技术标签:

【中文标题】R:在分组列中变异非零最小值【英文标题】:R: Mutate non zero minimum in grouped column 【发布时间】:2021-06-21 11:29:47 【问题描述】:

我正在尝试使用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

有什么想法吗?

【问题讨论】:

【参考方案1】:

你几乎明白了

library(tidyverse)

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

【讨论】:

以上是关于R:在分组列中变异非零最小值的主要内容,如果未能解决你的问题,请参考以下文章

R - 创建几列非零最小值的新列

如何用R从数据框中的各个列中找出最小值? [复制]

Pandas GroupBy 并选择特定列中具有最小值的行

11汇总和分组数据

R语言使用pastecs包的stat.desc函数计算dataframe数据字段的描述性统计信息(样本个数NULL值个数缺失值个数最小最大值均值中位数数据范围极差加和变异系数整体性等

R:每列最小值的行号