R 获取两列的最小值

R 获取两列的最小值,r,dataframe,minimum,R,Dataframe,Minimum,我希望获得最少两列,并在同一data.frame中创建一列。我该怎么做 例如: ID Parm1 Parm2 1 1 2 2 0 1 3 2 1 4 1 0 5 2 0 期望输出: ID Parm1 Parm2 Min 1 1 2 1 2 0 1 0 3

我希望获得最少两列,并在同一data.frame中创建一列。我该怎么做

例如:

ID    Parm1   Parm2
 1      1       2
 2      0       1
 3      2       1
 4      1       0
 5      2       0
期望输出:

ID    Parm1    Parm2     Min
 1      1        2        1
 2      0        1        0
 3      2        1        1
 4      1        0        0
 5      2        0        0

您希望在函数
pmin()
中实现并行最小值。例如,使用您的数据:

dat <- read.table(text = "ID    Parm1   Parm2
 1      1       2
 2      0       1
 3      2       1
 4      1       0
 5      2       0", header = TRUE)
这使得:

> dat
  ID Parm1 Parm2 min
1  1     1     2   1
2  2     0     1   0
3  3     2     1   1
4  4     1     0   0
5  5     2     0   0

以data.table方式:
dat[,min:=pmin(Parm1,Parm2)]
在tidyverse宇宙中,使用
dplyr
包:

库(dplyr)
dat%
行()
突变(最小值=最小值(Parm1,Parm2))
#>#A tibble:5 x 4
#>#按行:
#>ID Parm1 Parm2最小值
#>      
#> 1     1     1     2     1
#> 2     2     0     1     0
#> 3     3     2     1     1
#> 4     4     1     0     0
#> 5     5     2     0     0

由(v0.3.0)

数据$Min和
do.call(pmin,dat[-1])
创建于2020-11-15,如果您有大量变量,只想排除第一个
ID
变量并保存键入。感谢大家的回答。^今天我学到了这一点。到目前为止,我一直在用一些效率很低的方法来做这件事。非常感谢。如果有许多列,而您只想排除列
ID
变量,类似于@thelatemail评论中的建议,请使用
dat%>%rowwise()%%>%mutate(min=min(c_跨(!ID))
并保存键入内容。
> dat
  ID Parm1 Parm2 min
1  1     1     2   1
2  2     0     1   0
3  3     2     1   1
4  4     1     0   0
5  5     2     0   0