我有一个像这样的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
Run Code Online (Sandbox Code Playgroud)
现在我想创建新的变量"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
Run Code Online (Sandbox Code Playgroud)
我可以使用for循环来做到这一点:
for (i in 1:nrow(data)) {
data$E[i] <- min(data[i,c("A","B","C")])
}
Run Code Online (Sandbox Code Playgroud)
但我想知道这是否可以做得更好(效率更高)?
非常感谢!
这里有几种方法,用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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5663 次 |
| 最近记录: |