r - 基于列中的 ID 和值的计数器
问题描述
我有一个包含 ID 和类型列的数据框。我想要一个计数器,如果类型为“T”,那么下一行中的计数器将为每个 ID 的计数器 + 1。基本上,计数器是本示例中的 Output_column。
ID <- c(1,1,1,1,1,1,3,3,4,4,4,4)
Type <- c("A","A","T","A","A","A","A","A","T","A","T","A")
Output_Column <- c(1,1,1,2,2,2,1,1,1,2,2,3)
ID Type Output_Column
1 1 A 1
2 1 A 1
3 1 T 1
4 1 A 2
5 1 A 2
6 1 A 2
7 3 A 1
8 3 A 1
9 4 T 1
10 4 A 2
11 4 T 2
12 4 A 3
d <- data.frame(ID,Type, Output_Column)
解决方案
baseR 解决方案
output_col <- as.numeric(ave(Type, ID, FUN = function(x) cumsum(c('T', x[-length(x)]) == 'T')))
output_col
[1] 1 1 1 2 2 2 1 1 1 2 2 3
推荐阅读
- android - Android:对 jpeg 的 MediaStore 查询失败
- reactjs - 如何使用反应测试库测试材料 ui 自动完成谷歌地图
- python - 线程与 Python 中的对象一样存在
- java - 如何在 Android 中使用 Button 进行多项操作
- html - 居中对齐内容
- c++ - 复制矢量
当 Base 是一个抽象类时 - postgresql - 来自自定义 AMI 的 EC2 Postgresql docker 仅在重新启动 docker 后才会挂载数据库更改
- azure - 我能够从服务器外部访问站点,无法访问本地主机或服务器 Internet 浏览器
- python - 如何从方括号中的变量打印值?
- typescript - Typescript:计算属性时的类型强制