R合并来自JSON的两个数据

时间:2018-01-22 15:21:45

标签: json r merge

我对R很新,我需要做以下事情:

我有两个不同的JSON格式数据源,它们对应两个时间序列,基于不同的时间段(但重叠)。每个表的格式为:period,value。

我想生成一个表,它将是两者的合并,如果相应的句点仅在A中定义,则将缺少的(na)值放到B中,反之亦然。

示例:

DataA period; valueA 1980, 1 1981, 3 1982, 4 1983, 5

DataB period; valueB 1983, 5 1984, 8 1985, 4 1986, 0 1987, 2

我想要

Data Final period; valueA; ValueB 1980, 1, na 1981, 3, na 1982, 4, na 1983, 5, 5 1984, na, 8 1985, na, 4

我在表,数据框和列表之间有点混淆,我认为这就是为什么我的代码不起作用的原因:

data_final_A<-jsonlite::fromJSON("https://api.db.nomics.world/api/v1/json/series/imf-weo-ngap-npgdp-fra-6")
data_final_B<-jsonlite::fromJSON("https://api.db.nomics.world/api/v1/json/series/oecd-eo-fra-gap-a")

period<-data_final_A$data$values$period
value_A<-data_final_B$data$values$value

table_A<-t(rbind(period, value_A))
table_A<-as.data.frame(table_A, row.names = c("period", "value_A"))

period<-data_final_B$data$values$period
value_B<-data_final_B$data$values$value

table_B<-t(rbind(period, value_B))
table_B<-as.data.frame(table_B, row.names = c("period", "value_B"))

dplr <- merge(x= table_A, y= table_B)

我的数据集如下:

head(table_A)#table_A一直持续到2008年

  period value_A
1   1980    -0.473
2   1981    -1.268
3   1982    -0.807
4   1983    -1.540
5   1984    -2.097
6   1985    -2.618

head(table_B)#table B在2006年停止

  period       value_B
1   1985 -1.9656045947
2   1986 -1.9205245105
3   1987 -1.6475054919
4   1988  0.3946512289
5   1989  2.2192438689
6   1990  2.5759810216

结果表只是一个巨大的表,其大小为dim(table_A)* dim(table_B)。

感谢您的帮助,顺便说一句,我知道我的代码非常混乱,我很抱歉,我仍在探索,但我真的被卡住了。

一切顺利,

吨。

1 个答案:

答案 0 :(得分:0)

我试图像

一样加入他们
dplr <- merge(table_A, table_B, by=c("period"))

这应该有用。