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

标签 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

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

感谢您的帮助。

最佳答案

我们可以使用 pmin

y$d <- with(y, pmin(b, c))

或者
transform(y, d = pmin(b,c))

或与 dplyr
library(dplyr)
y %>%
  mutate(d = pmin(b,c))
min按列工作,假设我们想使用 min ,一个选项是
y %>%
  rowwise %>% 
  mutate(d = min(unlist(c(b,c))))

关于r - 变异以在每一行中创建最小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35329883/

相关文章:

r - 检查选择的列是否具有相同的值

r - 如何在 R 的摘要输出中查看隐藏在 "Other"下的元素?

r - 如何在 R 中更快地生成随机数?

从 Stata 复制种子设置

r - 在dplyr中移调

r - 给定列的最小值,在另一列中找到最小值(dplyr)

r - 如何根据来自多个列的多个条件创建一个新列?

r - 将组的每一行的数值变量更新为子组的最小值

R tibble 使用正则表达式重命名列

r - 在 R 中使用函数的输入作为变量名