【问题标题】:R: How can I merge two column in one (for loger column, not merge by column )R:如何将两列合并为一列(对于记录器列,而不是按列合并)
【发布时间】:2021-09-27 18:30:04
【问题描述】:

例如,我有这个数据框:

Id Age
1 14
2 28

我想写一个长这样的专栏:

Id new column
1 1
2 2
14
28

我该怎么办?

【问题讨论】:

    标签: r function merge


    【解决方案1】:

    我们可以unlist 数据并通过基于max length 填充NA 创建列

    lst1 <- list(df1$id, unlist(df1))
    out <- data.frame(lapply(lst1, `length<-`, max(lengths(lst1))))
    names(out) <- c("id", "new_column")
    

    【讨论】:

      【解决方案2】:

      这是另一种方法:

      df1 <- data.frame(New_column = c(df[,"Id"], df[,"Age"]))
      merge(df$Id, df1, by="row.names", all=TRUE)[,-1]
      

      输出:

         x New_column
      1  1          1
      2  2          2
      3 NA         14
      4 NA         28
      

      【讨论】:

        【解决方案3】:

        dplyr 的方法

        library(dplyr)
        
        df %>% 
          mutate(Age = Id) %>% 
          bind_rows(
            df %>% 
              mutate(Id = NA)
          ) %>% 
          rename(new_column = Age)
        
        # A tibble: 4 x 2
             Id new_column
          <int>      <int>
        1     1          1
        2     2          2
        3    NA         14
        4    NA         28
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-02-14
          • 1970-01-01
          • 1970-01-01
          • 2014-05-09
          • 1970-01-01
          相关资源
          最近更新 更多