【问题标题】:Reshape a dataframe with X1, Y1,X2,Y2 to X, Y1, Y2 in R将具有 X1、Y1、X2、Y2 的数据框重塑为 R 中的 X、Y1、Y2
【发布时间】:2020-01-24 17:53:15
【问题描述】:

我有一个数据框df,XY 组合如下

> df <- data.frame(X1=c(1:4),Y1=c(16:13),X2=c(4:7),Y2=c(-1:-4))
> df
  X1 Y1 X2 Y2
1  1 16  4 -1
2  2 15  5 -2
3  3 14  6 -3
4  4 13  7 -4

并希望通过将 X1X2 合并到新变量 X 添加 NA 来重塑 dfto df2,其中 Y1Y2 没有值。

结果应该是这样的

> df2
  X  Y1  Y2
1 1  16  NA
2 2  15  NA
3 3  14  NA
4 4  13  -1
5 5  NA  -2
6 6  NA  -3
7 7  NA  -4

最有效的方法是什么?

【问题讨论】:

    标签: r dataframe reshape2


    【解决方案1】:

    你可以使用dplyr::full_join:

    df2 <- dplyr::full_join(df[, c("X1", "Y1")], df[, c("X2", "Y2")], by = c("X1" = "X2"))
    names(df2)[1] <- "X"
    df2
    #  X Y1 Y2
    #1 1 16 NA
    #2 2 15 NA
    #3 3 14 NA
    #4 4 13 -1
    #5 5 NA -2
    #6 6 NA -3
    #7 7 NA -4
    

    【讨论】:

      【解决方案2】:

      使用来自base Rmerge

      merge(df[c('X1', 'Y1')], df[c('X2', 'Y2')], by.x = 'X1', by.y = 'X2', all = TRUE)
      

      【讨论】:

        猜你喜欢
        • 2017-11-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-09-30
        • 2015-09-12
        • 2016-09-02
        • 1970-01-01
        相关资源
        最近更新 更多