【发布时间】:2019-02-27 09:42:51
【问题描述】:
给定一个数字数据框
A <- c(1.1, 3.0, 2.0, 4.0, 0.0, 1.3)
B <- c(0.2, 1.0, 2.4, 1.1, 1.3, 0.0)
C <- c(5.2, 1.3, 3.7, 1.7, 1.3, 1.0)
data <- data.frame(A, B, C) %>% as_tibble()
如何创建包含按行最小正非零数的另一列(如果可能,使用 dplyr)以获得以下数据帧?
## A tibble: 6 x 4
# A B C posmin
# <dbl> <dbl> <dbl> <dbl>
#1 1.1 0.2 5.2 0.2
#2 3 1 1.3 1
#3 2 0 3.7 2
#4 4 1.1 1.7 1.1
#5 0 1.3 1.3 1.3
#6 1.3 0 1 1
什么是简洁,几乎可以完成工作的是
data %>% mutate(posmin = pmin(A, B, C))
但是有两个问题:
- 我的真实数据框有更多列(A 到 Z),我无法调用
pmin(A:Z) -
pmin计算行最小值
是否有类似pminpos 的东西,如果没有,我该如何创建它以便可以像上面代码中的pmin 一样调用它?以及如何在不传递以逗号分隔的名称列表的情况下指定许多连续的列?
非常感谢。
编辑:我显然没有强调这一点,我正在寻找非零正数,即严格大于 > 0 的数字。因此寻求-after 第 5 行和第 6 行的值不为零。
【问题讨论】:
-
第 5 行和第 6 行的最小值应该为 0,不是吗?
-
@JilberUrbina 我正在寻找严格大于零的数字。很抱歉含糊不清 - 我调整了问题的措辞。