创建一个新列以比较R中的其他两个列

时间:2020-11-04 01:45:16

标签: r calculated-columns

我的数据如下:

x             y  
2             5
3             6
4             2
6             1
7             10
12            16
145           1

希望将比另一个小的数字输出到新列中,如下所示:

x             y           z
2             5           2
3             6           3
4             2           2
6             1           1
7             10          7
12            16          12
145           1           1

所有数据都不相等,因此您不必担心。

x <- c(2,3,4,6,7,12,145)
y <- c(5,6,2,1,10,16,1)
df <- data.frame(x,y)

2 个答案:

答案 0 :(得分:1)

使用tidyverse时的case_p

remove(list = ls())
x <- c(2,3,4,6,7,12,145)
y <- c(5,6,2,1,10,16,1)
df <- data.frame(x,y)


df <- df %>%
    mutate(z = 
        case_when(
            x < y ~ x,
            TRUE ~ y
        )
    )
df

答案 1 :(得分:1)

您可以使用pmin来获得xy列之间的最小值。

df$z <- pmin(df$x, df$y)
df
#    x  y  z
#1   2  5  2
#2   3  6  3
#3   4  2  2
#4   6  1  1
#5   7 10  7
#6  12 16 12
#7 145  1  1