我有一个数据框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
,但我觉得它很慢。有更快的方法吗?
答案 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%
的基础。它对于构造索引向量以从备选方案中进行选择特别有用。