【问题标题】:Merging time stamps of different data frames in R在R中合并不同数据帧的时间戳
【发布时间】:2020-05-27 20:50:30
【问题描述】:

假设我有两个数据框,例如:

df1 <- data.frame(Date=seq.Date(as.Date("2019-02-01"),as.Date("2019-02-28"), by="days"), 
                   Coyote=(rep(10,28)))

df2 <- data.frame(Date=seq.Date(as.Date("2019-01-01"),as.Date("2019-03-31"), by="days"),
                  Birds=(rep(2,90)))  

如何合并df1 中的两个Dates 列而不影响其他变量?

期望的结果:

df_desired <- data.frame(Date=seq.Date(as.Date("2019-01-01"),as.Date("2019-03-31"), by="days"), 
                   Coyote=c(rep(NA,31),rep(10,28),rep(NA,31)))

         Date Coyote
1  2019-01-01     NA
                  ...
31 2019-01-31     NA
32 2019-02-01     10
                  ...
59 2019-02-28     10
60 2019-03-01     NA
                  ...
90 2019-03-31     NA

【问题讨论】:

    标签: r dataframe date


    【解决方案1】:

    你的意思是这样的吗? (只是一个抽样,实际结果是 90 行。)

    out <- merge(df1, df2[,"Date",drop=FALSE], by="Date", all=TRUE)
    
    ### and a sampling of the results, ordered
    out[order(out$Date),][c(1:3, 37:39, 88:90),]
    #          Date Coyote
    # 1  2019-01-01     NA
    # 2  2019-01-02     NA
    # 3  2019-01-03     NA
    # 37 2019-02-06     10
    # 38 2019-02-07     10
    # 39 2019-02-08     10
    # 88 2019-03-29     NA
    # 89 2019-03-30     NA
    # 90 2019-03-31     NA
    

    【讨论】:

    • 不错的基础解决方案。不需要full_joindrop=FALSE 选项适用于 2 列 df 大小写。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-09
    • 2021-11-20
    • 2020-11-18
    • 2019-04-28
    • 2019-11-19
    • 2021-09-05
    • 1970-01-01
    相关资源
    最近更新 更多