r - 创建一个以一个特定值及其另一个变量的行索引为条件的分类变量
问题描述
为了简单和可重复性,我在这里使用一个简单的数据框:
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 ”。
我已经在互联网上搜索了很多,但我找不到与我的情况相似的东西。如果有人可以帮助我,我将不胜感激,因为我不知道如何处理这种情况。
提前非常感谢!
解决方案
您可以使用cumsum
df$page = cumsum(df$v1 == "A") + 1L
推荐阅读
- prestashop - Prestashop 1.7 如何编辑 $stylesheets smarty 变量
- apache-kafka - Apache Kafka:将 __consumer_offsets 重新分配给新代理时出现 kafka.common.OffsetsOutOfOrderException
- c# - 从用户那里收集 int 并添加到数组中,直到他们输入“OK”
- java - 如何将时间戳存储在 Cassandra 的服务器端?
- php - 解析错误:语法错误,意外的 '' (T_ENCAPSED_AND_WHITESPACE),需要 '-' 或标识符 (T_STRING)
- python - Discord Bot 等待多个用户输入
- python - 使用给定的字符串生成具有相同 SHA1 哈希的初始 5 个字符的字符串
- php - 查找带有所有参数的函数调用
- javascript - 有没有办法按索引顺序比较数组并显示差异?
- java - 使用 Spring Data JPA 实现复合(嵌入式 ID)外键关系