在data.frame中创建具有最低值的新列

时间:2013-07-19 09:29:06

标签: r min

我有一个像这样的data.frame:

data <- data.frame(A=c(1,3,5),B=c(4,3,6),C=c(2,2,8),D=c(3,3,4))

  A B C D 
  1 4 2 3 
  3 3 2 3 
  5 6 8 4 

现在我想创建新的变量“E”,它是A,B和C列的最低值。所以data.frame现在看起来像这样:

 A B C D E
 1 4 2 3 1
 3 3 2 3 2
 5 6 8 4 5

我可以使用for循环执行此操作:

for (i in 1:nrow(data)) {
  data$E[i] <- min(data[i,c("A","B","C")])
}

但我想知道这是否可以采用不同的方式(效率更高)?

非常感谢!

1 个答案:

答案 0 :(得分:5)

以下是一些方法, 使用apply(将min函数应用于每一行) 或pmin(并列min)。

pmin( data[,1], data[,2], data[,3] )
# [1] 1 2 5
do.call( pmin, data[,1:3] )
# [1] 1 2 5
apply(data[,1:3], 1, min)
# [1] 1 2 5