首页 > 解决方案 > 创建一个以一个特定值及其另一个变量的行索引为条件的分类变量

问题描述

为了简单和可重复性,我在这里使用一个简单的数据框:

set.seed(1234)
df <- data.frame(v1 = sample(c("A", "B", "C", "D", "E", "F"), 100, 
                 replace = TRUE, prob = c(0.1,0.2,0.2,0.2,0.2,0.1)))

我的真实数据集包含从 pdf 文档中抓取的几页。想象一下,“ A ”表示一个新页面的开始。因此,例如,直到第一个“ A ”出现的行,所有数据都属于第一页。

通过使用以下代码,我可以轻松获取新页面开始的行索引:

page <- which(df$v1 == "A")

结果:在第 14 28 39 81 92 行中,我们观察到“ A ”。

为了能够按页面对数据进行分组,我想创建一个指示页码的新变量。因此,我想为行索引 < 14 的所有行分配值为 1,索引在 14 到 27 之间的所有行的值为 2,索引在 28 到 38 之间的所有行的值为 3,依此类推。

当然我的数据集比这个例子大很多,所以一个简单ifelse()的指定条件的解决方案效率不高。此外,我希望拥有可以应用于其他数据(从其他 pdf 中抓取)的通用代码,这些数据将在不同位置具有“ A ”。

我已经在互联网上搜索了很多,但我找不到与我的情况相似的东西。如果有人可以帮助我,我将不胜感激,因为我不知道如何处理这种情况。

提前非常感谢!

标签: rstringcategoriesdata-manipulationrecode

解决方案


您可以使用cumsum

df$page = cumsum(df$v1 == "A") + 1L

推荐阅读