我有一个像这样的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")])
}
但我想知道这是否可以采用不同的方式(效率更高)?
非常感谢!
答案 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