R 变异以在每行中创建最小值
我有一个关于在dplyr中使用基于其他两列的mutate函数在新列中创建最小值的问题 以下代码对新列中的每一行重复相同的值。有没有办法为新列中的每一行创建一个独立的最小值?由于速度原因,我希望避免使用循环或apply系列,如果可能的话,我希望坚持使用dplyr。代码如下:R 变异以在每行中创建最小值,r,dplyr,R,Dplyr,我有一个关于在dplyr中使用基于其他两列的mutate函数在新列中创建最小值的问题 以下代码对新列中的每一行重复相同的值。有没有办法为新列中的每一行创建一个独立的最小值?由于速度原因,我希望避免使用循环或apply系列,如果可能的话,我希望坚持使用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) colname
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))
或使用dplyr
library(dplyr)
y %>%
mutate(d = pmin(b,c))
min
按列工作,假设我们要使用min
,一个选项是
y %>%
rowwise %>%
mutate(d = min(unlist(c(b,c))))
通过使用
apply
函数并将margin
参数设置为margin=1
,可以按行而不是按列应用min
函数。您的行最小值函数如下所示:
apply(y, MARGIN = 1, FUN = function(x) min(x)))
y %>% mutate(b.c.min =
y %>%
select(one_of("b", "c")) %>%
apply(MARGIN = 1, FUN = function(x) min(x)))
然后,为了使rowwise min函数仅适用于列b和c,您可以使用mutate
中的select
函数,如下所示:
apply(y, MARGIN = 1, FUN = function(x) min(x)))
y %>% mutate(b.c.min =
y %>%
select(one_of("b", "c")) %>%
apply(MARGIN = 1, FUN = function(x) min(x)))
这(pmin)起了作用。非常感谢。我会尽快接受答案(7分钟后)。非常感谢。创建
y
的一种更简单的方法是执行y=data.frame(A,b,c)
,这样就不需要单独设置colnames
。