【问题标题】:R: Mutate non zero minimum in grouped columnR:在分组列中变异非零最小值
【发布时间】: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

有什么想法吗?

【问题讨论】:

    标签: r dplyr group-by min


    【解决方案1】:

    你几乎明白了

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

    【讨论】:

      猜你喜欢
      • 2014-10-26
      • 1970-01-01
      • 2021-04-04
      • 2022-06-16
      • 2021-12-27
      • 2013-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多