2つをマージしようとしていますdata.tables
。一つは、毎年二国間であるような:Rは、各四半期の次元を展開しながら、四半期ごとのdata.tableを両側の年次データにマージします。
quarterly <- data.table(country=c(rep("DE",4),rep("AT",4)),
time=c(rep(c("2001Q1","2001Q2","2001Q3","2001Q4"),2)),
aggregate_value=rnorm(8))
は私が年によって、そしてもちろん作品時間(yearquarter)でマージしたい:
をなどlibrary(data.table)
bilateral <- data.table(country=c("AT","AT","DE","DE"),
counterparty=c("DE","FR","AT","FR"),
time=c("2001Q1"),
bilateral_value=rnorm(4))
bilateral[,countrypair:=paste(country,counterparty,sep="_")]
四半期ごとに集計されている他の、
Data <- merge(bilateral, quarterly,by=c("country","time"),all=T)
が、私は(countrypairためNA's
しかしcountry
に対応aggregate_value
で)四半期を埋めるしたいと思いますので、私はduplicatしたいですeは、各二国間ペアの四半期データセットの値で、country
に基づいています。私はこれが直接merge.data.table
で可能であるべきだと思うが、私はどのように理解できない。
私はを目指しています:
goal <- data.table(country=c(rep("DE",8),rep("AT",8)),
counterparty=c("AT",NA,NA,NA,"FR",NA,NA,NA,"DE",NA,NA,NA,
"FR",NA,NA,NA),
time=c(rep(c("2001Q1","2001Q2","2001Q3","2001Q4"),4)),
bilateral_value=c(Data[1,bilateral_value],NA,NA,NA,
Data[2,bilateral_value],NA,NA,NA,
Data[6,bilateral_value],NA,NA,NA,
Data[7,bilateral_value],NA,NA,NA),
countrypair=c("AT_DE",NA,NA,NA,"AT_FR",NA,NA,NA,"DE_AT",NA,NA,NA,
"DE_FR",NA,NA,NA),
aggregate_value=c(rep(Data[2:5,aggregate_value],2),
rep(Data[7:10,aggregate_value],2)))
"aggregate_value国に対応します" - 私が間違っていない限り、これはあなたの 'ゴール'データセットには保持されません。また、あなたはFRとFrの国を使用しているようです...あなたの例をもっと慎重にしたり簡略化したりできます。 – Frank
Frが編集しました、thatnks!集計されたデータは国のすべてのカウンターパーティーのために繰り返され、細かいことは –