在 R 中组合不同长度的数据帧列

问题描述 投票:0回答:1

我尝试了 cbind 和 merge,但到目前为止两者都对我不起作用,合并不起作用,因为“realtime_period”列具有不同的日期,并且它合并了我不想要的日期。

我正在寻找新的数据框,使其在没有数据的情况下具有 NA,并且考虑到 2 个数据框的日期,NA 应该全部位于较短列的顶部。我还尝试为 id# 添加一列,该列接近但合并了从顶部开始的列,并且所有 NA 都位于底部而不是顶部,我需要它们来填充缺失的值。如果我能以某种方式从下到上启动行 id 并按行 id 合并,这将可行,但尚未弄清楚如何做到这一点。

#list will get bigger later
 list1=list("AWHMAN","AWHNONAG")

#loop to get the 2 data frames
for(vari in list1){
  temp1=get_alfred_series(vari,"value",realtime_start = "1967-12-01", observation_start = "1967-12-01")
  final= aggregate(value~realtime_period, temp1, tail, n=1)
  names(final)[names(final) == 'value'] <- tolower(vari)
  assign(tolower(vari), final)
}

#Then I have this but the last part won't work, as merge gives the wrong output (i cant merge by realtime). 

masterlist_test2=awhman
for(vari in list1){
  fin=tolower(unlist(vari))
  tmp <- get(fin)
  masterlist_test2=merge(masterlist_test2,tmp, by="realtime_period", all = TRUE)
}

我需要获取两个“值”列并将它们合并,填充从底部开始的所有行,以及由于大小不同而未填充的任何内容,而 NA 应该位于数据帧的顶部。

r dataframe merge cbind
1个回答
0
投票

使用 all.x = TRUE 参数可确保保留 df1 中的所有行,并且相应地匹配 df2 中的行。如果没有匹配项,则 df2 生成的列将具有 NA 值。

合并(df1,df2,by = c(“ID1”,“ID2”),all.x = TRUE)

© www.soinside.com 2019 - 2024. All rights reserved.