R中数据帧的简单连接计算

时间:2012-12-16 04:53:52

标签: r

我有一个数据框a,其中A,B,C是单独的条目

Source Target N
A B 100
A D 200

我有另一个数据框b用于条目的属性

Name Rate1 Rate2
A  0.1 0.2
B  0.2 0.3

我想在Flow中计算新列a,因为它是基于Flow = a$N * b[Name == a$Source]$Rate1计算的行。我尝试按行使用apply,但我觉得它很慢。有更快的方法吗?

2 个答案:

答案 0 :(得分:4)

我不知道您尝试使用apply,但这里有一个合并和转换的答案

  transform(merge(a,b,by.x = 'Source',by.y ='Name'),flow = N*Rate1)

  Source Target   N Rate1 Rate2 flow
1      A      B 100   0.1   0.2   10
2      A      D 200   0.1   0.2   20

答案 1 :(得分:3)

这是一个相当富有表现力的解决方案,与您尝试过的代码非常相似:

>  a$Flow <- a$N*b$Rate1[ match(a$Source, b$Name) ]
> a
  Source Target   N Flow
1      A      B 100   10
2      A      D 200   20

match功能是merge%in%的基础。它对于构造索引向量以从备选方案中进行选择特别有用。