r - 根据列值创建具有数字序列的行
问题描述
我有一个数据集,其中行序列与一个客户端相关。每个客户端的最后一行是“状态正常”。因此,我的数据由块组成,每个块都与一个客户相关。我需要创建一个列来显示所有块行中的客户端数量。例如我的数据是:
x = data.frame(A = c('name1', 'address1', 'status1', 'name2', 'address2', 'status2'), B= c('John', 'Texas', 'OK', 'William', 'Florida', 'OK')) x
我的预期输出是:
x = data.frame(A = c('name1', 'address1', 'status1', 'name2', 'address2', 'status2'), B = c('John', 'Texas', 'OK', 'William', 'Florida', 'OK'), C = c('1', '1', '1', '2', '2', '2')) x
谢谢。
解决方案
您可以使用cumsum
:
library(dplyr)
x %>% mutate(C = lag(cumsum(B == 'OK'), default = 0) + 1)
# A B C
#1 name1 John 1
#2 address1 Texas 1
#3 status1 OK 1
#4 name2 William 2
#5 address2 Florida 2
#6 status2 OK 2
推荐阅读
- ios - 如何关闭与 UIButton 一起使用的图像上的蓝色叠加层?
- c# - 在 C# 中的 ObjectListView 中的单元格内自定义格式
- c# - 通知不振动或不亮
- javascript - 如何在当前组件中附加 html 元素?
- or-tools - 限制ortools中vrp问题的活动尺寸
- node.js - 谷歌“一键式”验证:令牌中的段数错误
- javascript - 为什么我的代码在比较 2 个数组时只返回一次 true?
- laravel - laravel中不同的404页面
- string - 从具有多个扩展名的文件名中删除某些扩展名
- amazon-web-services - AWS ALB 随机 504 网关超时