【发布时间】:2015-01-15 07:52:44
【问题描述】:
我有一些这样的数据
A B C D
[1,] 23 23 12 34
[2,] 12 13 11 9
[3,] 70 80 67 76
[4,] 43 23 25 40
我想生成两个新变量。
每行的最小数
最小值的列名
即结果应该是这样的:
A B C D min minCol
1 23 23 12 34 12 C
2 12 13 11 9 9 D
3 70 80 67 76 67 C
4 43 23 25 40 23 B
我尝试了下面的脚本,我确实得到了“min”变量,但是,当我尝试生成“minCol”时,一些值被记为“min”,而不是 A,B, C 或 D。
data <- transform(data, min=apply(data[,c(1:4)],1, min,na.rm = TRUE))
运行后,我得到了下面的数据框,这很好。
A B C D min
1 23 23 12 34 12
2 12 13 11 9 9
3 70 80 67 76 67
4 43 23 25 40 23
然后我运行下面的脚本
data <- data.frame(data, minCol= apply(data, 1, function(row)
{colnames(data)[[which.min(row)]]}))
得到了这样的东西
A B C D min minCol
1 23 23 12 34 12 C
2 12 13 11 9 9 D
3 70 80 67 76 67 C
4 43 23 25 40 23 min
有人可以帮忙吗?
【问题讨论】: