我想获得最少两列并在同一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
非常感谢您的帮助。
答案 0 :(得分:25)
您希望在函数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)
您可以使用transform()
添加min
列作为pmin(Parm1, Parm2)
的输出,并在不编制索引的情况下访问dat
的元素:
dat <- transform(dat, min = pmin(Parm1, Parm2))
这给出了:
> 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
答案 1 :(得分:1)
以data.table方式:dat [, min := pmin(Parm1, Parm2)]
答案 2 :(得分:0)
在tidyverse宇宙中,使用dplyr
软件包:
library(dplyr)
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 %>%
rowwise() %>%
mutate(min = min(Parm1, Parm2))
#> # A tibble: 5 x 4
#> # Rowwise:
#> ID Parm1 Parm2 min
#> <int> <int> <int> <int>
#> 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
由reprex package(v0.3.0)于2020-11-15创建