我有一个数据框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
按行使用,但我觉得它很慢。有更快的方法吗?
我有一个数据框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
按行使用,但我觉得它很慢。有更快的方法吗?
我不知道您尝试过什么应用,但这里是合并和转换的答案
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
这是一个相当有表现力的解决方案,与您尝试的代码非常相似:
> 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%