首页 > 解决方案 > 通过在大型数据框中交叉来合并两列

问题描述

假设这个数据框:

x<-data.frame(id1=c("a","b","c"),vals1=1:3)

我怎样才能实现以下目标:

  NEW 
1   a
2   1
3   b
4   2
5   c
6   3

标签: rdataframe

解决方案


基础 R 解决方案:

# Data: x => data.frame
x <- data.frame(id1 = c("a","b","c"), vals1 = 1:3)

# Allocate memory -- create empty character vector: NEW => character vector:
NEW <- vector("character", (ncol(x) * nrow(x)))

# Store the solution: y => data.frame
y <- data.frame(NEW = as.character(unlist(sapply(seq_len(nrow(x)), function(i){
      c(as.character(x$id1[i, drop = TRUE]), as.character(x$vals1[i, drop = TRUE]))
        }
      )
    )
  )
)

推荐阅读