首页 > 解决方案 > 遍历偶数/奇数列并将它们堆叠在特定列下

问题描述

我有来自 Douglas Montgomery 的《时间序列分析与预测简介》一书中的以下数据集:

在此处输入图像描述

我从这个电子表格创建了一个名为 pharm 的数据框。我们只有两个变量,但它们在几列中重复。我想将所有奇数的“周”列从第 2 列中取出,并按顺序将它们堆叠在第 1 周列下。相反,我想对偶数“销售额,以千计”列做同样的事情。这是我到目前为止所尝试的:

pharm2 <- data.frame(week=c(pharm$week, pharm[,3], pharm[,5], pharm[,7]), sales=c(pharm$sales, pharm[,4], pharm[,6], pharm[,8]))

这是有效的,因为没有很多列,但我需要一种更有效的方法,因为硬编码对于很多列是不实用的。有谁知道更有效的方法来做到这一点?

标签: rloops

解决方案


如果列是交替的,只需使用回收逻辑向量进行子集,unlist并创建一个新的 data.frame

out <- data.frame(week = unlist(pharm[c(TRUE, FALSE)]),
           sales = unlist(pharm[c(FALSE, TRUE)]))

推荐阅读