数据框中每一行的最小值
min for each row in a data frame
我尝试计算数据框中多列(按行 min
)的最小值,但是 min
函数自动 returns 整个数据框中的最小值每列而不是每一行分别。我确定我在这里遗漏了一些非常简单的东西?非常感谢任何想法。
x <- c(1,2,7)
y <- c(1,5,4)
minIwant <- c(1,2,4)
df <- data.frame(x, y, minIwant)
df$minIget <- min(df$x,df$y)
df
x y minIwant minIget
1 1 1 1 1
2 2 5 2 1
3 7 4 4 1
您可以使用apply
遍历每一行
apply(df, 1, FUN = min)
其中 1
表示将 FUN
应用于 df 的每一行,2
表示将 FUN
应用于列。
要删除缺失值,请使用:
apply(df, 1, FUN = min, na.rm = TRUE)
我们也可以使用 library(matrixStats)
中的 rowMins
library(matrixStats)
df$minIwant <- rowMins(as.matrix(df))
只想补充一下如何使用 dplyr 执行此操作。
library(dplyr)
x<-c(1,2,7)
y<-c(1,5,4)
df <- data.frame(x,y)
df %>% rowwise() %>% mutate(minIget = min(x, y))
# A tibble: 3 x 3
x y minIget
<dbl> <dbl> <dbl>
1 1. 1. 1.
2 2. 5. 2.
3 7. 4. 4.
我们可以使用 pmin
,它可以找到值集的平行最小值。由于我们的 df
在技术上是一个列表,我们需要通过 do.call
.
运行 它
df$min <- do.call(pmin, df)
这给出了
df
# x y min
# 1 1 1 1
# 2 2 5 2
# 3 7 4 4
数据:
df <- data.frame(x = c(1, 2, 7), y = c(1, 5, 4))
此外,如果需要na.rm = TRUE
,你可以
df$min <- do.call(pmin, c(df, na.rm = TRUE))
我尝试计算数据框中多列(按行 min
)的最小值,但是 min
函数自动 returns 整个数据框中的最小值每列而不是每一行分别。我确定我在这里遗漏了一些非常简单的东西?非常感谢任何想法。
x <- c(1,2,7)
y <- c(1,5,4)
minIwant <- c(1,2,4)
df <- data.frame(x, y, minIwant)
df$minIget <- min(df$x,df$y)
df
x y minIwant minIget
1 1 1 1 1
2 2 5 2 1
3 7 4 4 1
您可以使用apply
遍历每一行
apply(df, 1, FUN = min)
其中 1
表示将 FUN
应用于 df 的每一行,2
表示将 FUN
应用于列。
要删除缺失值,请使用:
apply(df, 1, FUN = min, na.rm = TRUE)
我们也可以使用 library(matrixStats)
rowMins
library(matrixStats)
df$minIwant <- rowMins(as.matrix(df))
只想补充一下如何使用 dplyr 执行此操作。
library(dplyr)
x<-c(1,2,7)
y<-c(1,5,4)
df <- data.frame(x,y)
df %>% rowwise() %>% mutate(minIget = min(x, y))
# A tibble: 3 x 3
x y minIget
<dbl> <dbl> <dbl>
1 1. 1. 1.
2 2. 5. 2.
3 7. 4. 4.
我们可以使用 pmin
,它可以找到值集的平行最小值。由于我们的 df
在技术上是一个列表,我们需要通过 do.call
.
df$min <- do.call(pmin, df)
这给出了
df
# x y min
# 1 1 1 1
# 2 2 5 2
# 3 7 4 4
数据:
df <- data.frame(x = c(1, 2, 7), y = c(1, 5, 4))
此外,如果需要na.rm = TRUE
,你可以
df$min <- do.call(pmin, c(df, na.rm = TRUE))