【问题标题】:how to combine several data frame without losing data in one data frame如何组合多个数据帧而不丢失一个数据帧中的数据
【发布时间】:2019-03-18 01:30:53
【问题描述】:

我可以合并两个数据

df1 <- read.table(text="info   var1m pos_var1
1       C001        NA       NA
2       C002        NA       NA
3       C003 0.1790000        1
4       C004        NA       NA
5       C007 0.0645000        1
6       C010 0.3895000        1
11      C016 0.2805000        1
12      C017 0.7805001        1", header=T, stringsAsFactors=F)
and this

df2 <- read.table(text="info   var1  var2
1      C003 0.1790 1.1305
2      C007 0.0645 0.2985
3      C010 0.3895 0.1705
4      C016 0.1740 0.3980
5      C017 0.4840 0.3375
6      C022 0.1740 0.3980
7      C023 0.4840 0.3375", header=T, stringsAsFactors=F)

df3 <- read.table(text="info   var1  var2
5      C017 0.4840 0.3375
6      C022 0.1740 0.3980
7      C023 0.4840 0.3375", header=T, stringsAsFactors=F)

我只是举一个我试图合并的三个数据集的例子。我不应该将它们两个两个结合起来,因为那样我会丢失一些信息

例如,为了将其中两个结合起来,我可以执行以下操作

mydf <- inner_join(df1,df2,'info')

然后将第三个、第四个等数据集组合到其中。但是,如果我在 df1,df2 和 combine 中没有相互数据,它将被丢弃,但在 df1 和 df3 中可能有类似的数据。

有没有一种方法可以在不丢失信息的情况下合并尽可能多的数据,但保留所有数据中的所有相互信息?

【问题讨论】:

  • Reduce(function(x, y) inner_join(x,y,'info'), list(df1, df2, df3)) ?
  • 我不确定你想要什么,但mergeall=TRUE 可能有用。
  • @Ronak Shah 这带来了三者之间相互的一个,我想带来 df1 和 df2 、 df1 和 df3 、 df2 和 df3 之间相互的其他人,而不仅仅是那个三者之间
  • 您能否包含给定示例的预期输出?

标签: r


【解决方案1】:
library(dplyr)
mydf <- df1 %>%
  full_join(df2) %>%
  full_join(df3)

输出:

> mydf
   info     var1m pos_var1   var1   var2
1  C001        NA       NA     NA     NA
2  C002        NA       NA     NA     NA
3  C003 0.1790000        1 0.1790 1.1305
4  C004        NA       NA     NA     NA
5  C007 0.0645000        1 0.0645 0.2985
6  C010 0.3895000        1 0.3895 0.1705
7  C016 0.2805000        1 0.1740 0.3980
8  C017 0.7805001        1 0.4840 0.3375
9  C022        NA       NA 0.1740 0.3980
10 C023        NA       NA 0.4840 0.3375

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-22
    • 2020-09-26
    • 2023-03-20
    • 2020-03-03
    相关资源
    最近更新 更多