我有两个数据帧,其中一个(df1
)看起来像这样:
CityYear City Year Value
NY2000 NY 2000 1.2
NY2005 NY 2005 1.0
NY2010 NY 2010 1.4
NY2015 NY 2015 NA
LA2000 LA 2000 0.9
LA2005 LA 2005 1.5
LA2010 LA 2010 1.3
LA2015 LA 2015 NA
SF2000 SF 2000 0.8
SF2005 SF 2005 1.7
SF2010 SF 2010 1.2
SF2015 SF 2015 1.3
...
,以此类推。第二个数据帧(df2
)看起来像这样:
City1 City2 Connections
NY NY 0
NY LA 32
NY SF 28
NY DC 12
...
SF NY 28
SF LA 12
...
基本上将每个城市(甚至在我的第一个数据集中都没有)配对并给出他们的联系。请注意,每个城市和一对城市都会重复两次(分别为City1
和City2
)。
在df1
中,我想计算一个新变量Flow
,它从下面的公式中获取值(我认为比用单词解释它要清晰得多,但如有必要,我可以这样做)。
我是R的新手,我不知道从哪里开始。我知道(或相信)我需要一个for
循环,但是我不知道从那里去哪里。任何帮助将不胜感激。
编辑:要用文字澄清公式,对于每一个城市年观察,我都希望将当年每个其他城市的Value
乘以{{ 1}}在两个城市中,并将每个值加在一起。例如,对于2000年的纽约,我想将其与LA的联系数乘以2000年LA的值,然后对DC进行同样的处理,以此类推,在2000年对每个城市进行同样的操作,然后将结果相加为一个{{1 }}的值Connections
。
答案 0 :(得分:0)
我没有数据可以进行测试,但希望这会有所帮助
year = unique(df1$year)
City = unique(df1$City)
value = vector()
connection = vector()
for(i in 1:length(year)){
for(j in 1:length(City)){
value = df1$Value[df1$year ==year[i] & df1$City != City[j]]
connection = df2$Connection[df2$City1 == City[j] & df2$City2!=City[j]]
print(sum(value * connection))
}}