2015-03-25 42 views
2

的我有这样data.frame:匹配所有对2个矢量到第三塔

x1=c(1,2,3,4,5) 
values=c(1.5,2.2,1.1,2.3,1.1) 
d=data.frame(x1,values) 

我devided x1

x=c(1,2) 
y=c(3,4,5) 

,然后我计算使用expand.grid

e=expand.grid(x=x,y=y) 

> e 
    x y 
    1 3 
    2 3 
    1 4 
    2 4 
    1 5 
    2 5 
所有对

我的问题是如何计算给出值(x)/值(y)的第三列? Like:

x y values_1 
    1 3 1.5/1.1 
    2 3 2.2/1.1 
    1 4 1.5/2.3 
    2 4 2.2/2.3 
    1 5 1.5/1.1 
    2 5 2.2/1.1 

谢谢你的帮忙。

回答

4

你想用方括号:

e$newcol <- with(e,values[x]/values[y]) 

或类似

e$newcol <- values[e$x]/values[e$y] 

这使得e

x y newcol 
1 1 3 1.3636364 
2 2 3 2.0000000 
3 1 4 0.6521739 
4 2 4 0.9565217 
5 1 5 1.3636364 
6 2 5 2.0000000 

要了解更多信息,请键入help.start(),定位到“ R介绍“及其关于”索引向量;选择“的章节修改和修改数据集的子集“。

+1

太棒了!谢谢你的帮助。 – Math 2015-03-25 02:23:36

相关问题