我的数据如下:
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)
答案 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
来获得x
和y
列之间的最小值。
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