【问题标题】:Merging multiple dataframes by column and row [duplicate]按列和行合并多个数据框[重复]
【发布时间】:2020-09-12 16:10:27
【问题描述】:

我创建了一个如下的数据框

test <- data.frame(ID = c(rep(1:60, each =11)), time = (c(rep(0:10))), resp = NA, liver = NA)

对于test 数据帧中每个对应的IDtime,我想将它与其他数据帧合并,例如这个名为resp_test 的数据帧。

ID  time   resp  
1       0 51
1       1 22
1       2 74
1       3 32
1       4 23
1       5 21
1       6 12
1       7 84
1       8 21
1       9 92
1       10 78

但是,并非resp_test 中的所有 ID 都具有 resp 变量上的完整 (0 -> 10) time 数据,就像这个一样。请注意变量time = 4 的数据缺失,time= 7 到time = 10 的数据也缺失。

    ID          time resp
1   13072516    2   NA
2   12964437    3   7.2
3   12964437    3   0.8
4   12964437    5   14.4
5   12964437    5   1.6
6   12964437    6   20.7
7   12964437    6   2.3
8   12964437    7   45.0
9   12964437    7   5.0
10  12964437    7   22.5
11  12964437    7   2.5
12  13115001    0   28.8
13  13115001    0   22.3

我试过了 merge(test, resp_test, by = "time") 但我得到的只是一个空数据框。

任何解决此问题的提示将不胜感激。

【问题讨论】:

    标签: r database dataframe merge


    【解决方案1】:

    试试

    library(dplyr)
    left_join(test, resp_test, by = "time")
    

    【讨论】:

    • 效果很好。我没有想过使用left_join,也不知道你可以使用by = c("ID", "time")。非常感谢。
    【解决方案2】:

    要同时合并IDtime,您应该这样做:

    library(dplyr)
    
    test %>% 
      select(-resp) %>% 
      left_join(resp_test, by = c("ID", "time"))
    

    【讨论】:

    • 效果很好。我没有想过使用left_join,也不知道你可以使用by = c("ID", "time")。非常感谢。
    • 请问,使用merge()和left_join()有什么区别?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-05
    • 2014-05-02
    • 1970-01-01
    • 1970-01-01
    • 2019-02-12
    相关资源
    最近更新 更多