首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >合并或合并两个不相等行的数据,并用R中最接近的NAs值填充空白。

合并或合并两个不相等行的数据,并用R中最接近的NAs值填充空白。
EN

Stack Overflow用户
提问于 2020-08-01 22:42:43
回答 1查看 88关注 0票数 0

我想按照下面最近的时间合并两个数据帧,

代码语言:javascript
复制
   > df1

           Time           Var1   Var2
01/01/2019 01:10:00       "A"    "D"
02/01/2019 01:10:00       "B"    "E"
03/01/2019 01:10:00       "C"    "F"

 > df2
Time                      Var3   Var4
01/01/2019 01:10:00        "C"    "H"
02/01/2019 01:10:00        "B"    "I"
02/01/2019 10:10:00        "G"    "J"
04/01/2019 01:10:00        "A"    "K"

根据时间合并它们。理想的合并数据框架应该如下,

代码语言:javascript
复制
 Time                      Var3   Var4    var1    var2
01/01/2019 01:10:00        "C"    "H"     "A"      "D"
02/01/2019 01:10:00        "B"    "I"     "B"      "E"
02/01/2019 10:10:00        "G"    "J"     "B"      "E"    
04/01/2019 01:10:00        "A"    "K"     "C"      "F"

如何认识到这一点?谢谢!

EN

回答 1

Stack Overflow用户

发布于 2020-08-01 23:13:04

data.table中使用滚动连接的一个选项

代码语言:javascript
复制
df1[df2, on=.(Time), roll="nearest", allow.cartesian=TRUE]

产出:

代码语言:javascript
复制
                  Time Var1 Var2 Var3 Var4
1: 2019-01-01 01:10:00    A    D    C    H
2: 2019-02-01 01:10:00    B    E    B    I
3: 2019-02-01 10:10:00    B    E    G    J
4: 2019-04-01 01:10:00    C    F    A    K

数据:

代码语言:javascript
复制
library(data.table)
df1 <- fread('Time,Var1,Var2
01/01/2019 01:10:00,A,D
02/01/2019 01:10:00,B,E
03/01/2019 01:10:00,C,F')
df1[, Time := as.POSIXct(Time, format="%m/%d/%Y %T")]

df2 <- fread('Time,Var3,Var4
01/01/2019 01:10:00,C,H
02/01/2019 01:10:00,B,I
02/01/2019 10:10:00,G,J
04/01/2019 01:10:00,A,K')
df2[, Time := as.POSIXct(Time, format="%m/%d/%Y %T")]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63210738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档