将所有2对向量匹配到第三列

时间:2015-03-25 02:11:57

标签: r

我有这个data.frame:

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

我将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)?? 喜欢:

  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

感谢您的帮助。

1 个答案:

答案 0 :(得分: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简介”文档及其“索引向量;选择和修改数据集子集”部分。