R 获取两列的最小值
我希望获得最少两列,并在同一data.frame中创建一列。我该怎么做 例如: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
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