R语言实现数据框奇偶列筛选并堆叠到指定列的高效方法
基础R实现(无需额外依赖包)
该方案完全适配任意数量的交替列场景,无需硬编码指定列序号:
# 提取所有奇数位置的Week列,转为一维向量 week_all <- unlist(pharm[, seq(1, ncol(pharm), by = 2)], use.names = FALSE) # 提取所有偶数位置的Sales列,转为一维向量 sales_all <- unlist(pharm[, seq(2, ncol(pharm), by = 2)], use.names = FALSE) # 合并为最终数据框 pharm2 <- data.frame(week = week_all, sales = sales_all)
tidyverse 实现(代码更易维护)
如果日常使用tidyverse套件,用pivot_longer可实现更灵活的长表转换:
library(tidyverse) pharm2 <- pharm %>% pivot_longer( cols = everything(), names_to = c(".value", NA), # 每两列作为一组拆分,适配Week、Sales交替排布的结构 names_sep = 1 )
两种方案均适配任意列数的同结构数据集,不需要手动调整列索引。
内容的提问来源于stack exchange,提问作者user3736739
相关产品推荐
相关产品推荐

