带有一些列

时间:2015-12-01 03:03:35

标签: r

我们说我有一些数字如下:

ID  K1  K2  K3   K4   K5
1  0.1 0.2 0.15 0.25  0.35

我想从列K1,K2,K4和K5获得最小值 我知道如何获得连续所有值的最小值:

apply(my.matrix, 1, FUN = function(x) {min(x[x > 0])})

但是,我不知道如何扩展该声明,以便我可以排除一列并获得剩余列的最小值。

3 个答案:

答案 0 :(得分:3)

我们可以在转换为pmin

后使用data.frame
 do.call(pmin, c(as.data.frame(my.matrix[,c('K1', 'K2', 'K4', 'K5')]),
                 list(na.rm=TRUE)))

或使用rowMins

中的library(matrixStats)
library(matrixStats)
rowMins(my.matrix[,c('K1', 'K2', 'K4', 'K5')], na.rm=TRUE)

数据

set.seed(24)
my.matrix <- matrix(sample(c(1:9, NA), 4*10, replace=TRUE), 
   ncol=10, dimnames=list(NULL, paste0('K', 1:10)))

答案 1 :(得分:1)

您可以在矩阵的子集上使用apply。

struct node*

答案 2 :(得分:0)

您可以通过重塑来完成此操作:

library(tidyr)
library(dplyr)

data %>%
  gather(K_number, K, K1:K5) %>%
  group_by(ID) %>%
  filter(K_number != "K3") %>%
  filter(K == min(K) ) %>%
  right_join(data)