变异以在每一行中创建最小值

AME*_*AME 7 r dplyr

我有一个关于使用基于其他两列的 mutate 函数在 dplyr 的新列中创建最小值的问题。

以下代码为新列中的每一行重复相同的值。有没有办法为新列中的每一行创建一个独立的最小值?由于速度的原因,我希望避免使用循环或应用系列,如果可能的话,我想坚持使用 dplyr。这是代码:

a = data.frame(runif(5,0,5))
b = data.frame(runif(5,0,5))
c = data.frame(runif(5,0,5))

y = cbind(a,b,c)

colnames(y) = c("a","b","c")

y = mutate(y, d = min(y$b, y$c))

y
Run Code Online (Sandbox Code Playgroud)

新列“d”只是相同数字的重复。关于如何修复它以便它是每行中“b”和“c”的最小值的任何建议?

感谢您的帮助。

akr*_*run 8

我们可以用 pmin

y$d <- with(y, pmin(b, c))
Run Code Online (Sandbox Code Playgroud)

或者

transform(y, d = pmin(b,c))
Run Code Online (Sandbox Code Playgroud)

或与 dplyr

library(dplyr)
y %>%
  mutate(d = pmin(b,c))
Run Code Online (Sandbox Code Playgroud)

min按列工作,假设我们想使用min,一个选项是

y %>%
  rowwise %>% 
  mutate(d = min(unlist(c(b,c))))
Run Code Online (Sandbox Code Playgroud)