如何使用函数实现DataFrame列的上下堆叠切换?
实现DataFrame两列上下合并为单列的方法
当然可以实现这个需求啦!在R里有几种简单高效的方式来完成操作,下面给你一一演示:
方法一:基础R快速合并(最直接)
直接提取两列的向量并拼接,再转换为DataFrame:
# 先创建示例数据 a <- data.frame("A" = 1:5, "B" = 2:6) # 合并A、B列并生成新的单列DataFrame result <- data.frame(A = c(a$A, a$B))
运行后result就是你想要的单列结构,内容依次是A列的所有值,接着是B列的所有值。
方法二:使用stack()函数
stack()函数专门用于将宽格式数据转为长格式,刚好适合这个场景:
a <- data.frame("A" = 1:5, "B" = 2:6) # 转换后取值列,并重命名为"A" result <- stack(a)[, 1, drop = FALSE] names(result) <- "A"
方法三:tidyverse工具包的pivot_longer()
如果你习惯用tidyverse生态的工具,pivot_longer()会更灵活:
# 先加载tidyverse包(如果没安装先运行install.packages("tidyverse")) library(tidyverse) a <- data.frame("A" = 1:5, "B" = 2:6) result <- a %>% pivot_longer( cols = everything(), # 选择所有列 names_to = NULL, # 丢弃原列名 values_to = "A" # 新列的名称设为"A" )
验证结果
运行任意一种方法后,打印result就能得到期望的输出:
print(result) # 输出: A 1 1 2 2 3 3 4 4 5 5 6 2 7 3 8 4 9 5 10 6
内容的提问来源于stack exchange,提问作者Babas
相关产品推荐
相关产品推荐

