R根据值的计数创建一个新的向量,直到现有向量的第一个值实例

标签 r count

我如何创建一个新变量“CountWK”,该变量基于“WK”中出现的值计数,直到“性能”中按“ID”分组的第一个“1”实例?

ID<-c('A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C', 'C', 'C')
WK<-c(1, 2, 3, 1, 2, 3, 1, 2, 3, 4, 5)
Performance<-c(0,1,1,0,1,0,0,1,0,1,1)
Data<-data.frame(ID, WK, Performance)

因此,对于 ID“A”CountWk 将是“2”,对于“B”“2”,对于 C“2”,除了包含第一个实例的行之外,每隔一行的“CountWk”中的值为 N/A “性能”中的“1”。

最佳答案

这是我将如何使用 data.table 来解决这个问题包裹

首先使用 .I 找到行索引和 match

library(data.table)
indx <- setDT(Data)[, .I[match(1L, Performance)], by = ID]$V1

然后分配 WKCountWk按那个索引
Data[indx, CountWk := WK][]
#     ID WK Performance CountWk
#  1:  A  1           0      NA
#  2:  A  2           1       2
#  3:  A  3           1      NA
#  4:  B  1           0      NA
#  5:  B  2           1       2
#  6:  B  3           0      NA
#  7:  C  1           0      NA
#  8:  C  2           1       2
#  9:  C  3           0      NA
# 10:  C  4           1      NA
# 11:  C  5           1      NA

关于R根据值的计数创建一个新的向量,直到现有向量的第一个值实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29591074/

相关文章:

r - dplyr 句点字符 "."指的是什么?

r - 带有预先计算四分位数的彩色箱线图

php - 选择数据库中条目最多的类别

r - 如何计算栅格堆栈列表中的栅格数量

r - 将最大水平添加到两个因素

r - LIKE sqldf 上的内连接

mySQL 查询组合列 count()

javascript - jquery 计数函数。 if 语句

r - 如何在 Shiny 的应用程序中显示忙碌指示器?

php - 在连接表中计算结果并在侧边栏中显示 () 之间