2

我有一个数据框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

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

4

2 回答 2

4

我不知道您尝试过什么应用,但这里是合并和转换的答案

  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
于 2012-12-16T05:20:11.313 回答
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%

于 2012-12-16T06:51:15.500 回答