2014-02-24 44 views
11

我想获取两列中的最小值并在相同的data.frame中创建一列。 我该怎么做?获取两列的最小值

例如:

ID Parm1 Parm2 
1  1  2 
2  0  1 
3  2  1 
4  1  0 
5  2  0 

所需的输出:很多的帮助

ID Parm1 Parm2  Min 
1  1  2  1 
2  0  1  0 
3  2  1  1 
4  1  0  0 
5  2  0  0 

感谢。

+7

'data $ Min < - with(data,pmin(Parm1,Parm2))' – rawr

回答

22

您希望函数pmin()中实现的并行最小值。使用您的数据。例如:

dat <- read.table(text = "ID Parm1 Parm2 
1  1  2 
2  0  1 
3  2  1 
4  1  0 
5  2  0", header = TRUE) 

可以使用transform()min列添加为pmin(Parm1, Parm2)输出和访问的dat的元素,而无需索引:

dat <- transform(dat, min = pmin(Parm1, Parm2)) 

这给:

> dat 
    ID Parm1 Parm2 min 
1 1  1  2 1 
2 2  0  1 0 
3 3  2  1 1 
4 4  1  0 0 
5 5  2  0 0 
+2

和'do.call(pmin,dat [-1])'如果您有大量变量d只想排除第一个“ID”变量并保存输入。 – thelatemail

+0

谢谢大家的回答^ _^ – Ianthe

+0

今天我学到了这个。到目前为止,我正在使用一些非常低效的方法来实现这一点。非常感谢。 – Jack