我对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)。
感谢您的帮助,顺便说一句,我知道我的代码非常混乱,我很抱歉,我仍在探索,但我真的被卡住了。
一切顺利,
吨。
答案 0 :(得分:0)
我试图像
一样加入他们dplr <- merge(table_A, table_B, by=c("period"))
这应该有用。