r - 如何为感兴趣的变量中的特定值按组创建计数变量?

标签 r count sequence

目前,我必须在队列研究的数据收集阶段处理软件生成的paradata(长格式)。

如何通过组变量创建一个包含特定值出现次数的变量(例如 Stata 中的 by id: gen _n if VAR1==2)?

数据基本上是这样的:

 ID:   VAR1:    
 1       2      
 1       1      
 1       2      
 2       2      
 2       3      
 2       2      
 3       2      
 3       2      
 3       2       

我可以使用创建变量 count.1

`data$count.1 <- ave(data$VAR1, data$ID,  FUN = seq_along)`

 ID:   VAR1:    count.1: 
 1       2       1           
 1       1       2           
 1       2       3          
 2       2       1            
 2       3       2           
 2       2       3            
 3       2       1            
 3       2       2            
 3       2       3            

如何创建一个变量count.2,通过ID来统计VAR1中事件2发生的次数?

 ID:   VAR1:    count.1:  count.2:
 1       2       1            1
 1       1       2           NA
 1       2       3            2
 2       2       1            1
 2       3       2           NA
 2       2       3            2
 3       1       1           NA
 3       2       2            1
 3       2       3            2 

数据:

ID=c(1,1,1,2,2,2,3,3,3)
VAR1=c(2,1,2,2,3,2,1,2,2)
data <- as.data.frame(cbind(ID, VAR1))

先谢谢了!!!

最佳答案

尝试

 data$count.2 <- with(data, ave(VAR1==2, ID,
                 FUN=function(x) ifelse(x, cumsum(x), NA)) )

 data$count.2
 #[1]  1 NA  2  1 NA  2 NA  1  2

或者使用data.table

 library(data.table)
 setDT(data)[VAR1==2, count.2:=1:.N, by=ID][]
 #   ID VAR1 count.2
 #1:  1    2       1
 #2:  1    1      NA
 #3:  1    2       2
 #4:  2    2       1
 #5:  2    3      NA
 #6:  2    2       2
 #7:  3    1      NA
 #8:  3    2       1
 #9:  3    2       2

或者使用dplyr

 library(dplyr)
 data %>% 
      group_by(ID) %>% 
       mutate(count.2= ifelse(VAR1==2, cumsum(VAR1==2), NA))

关于r - 如何为感兴趣的变量中的特定值按组创建计数变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26591511/

相关文章:

r - 如何在 R 中堆叠光栅文件?

jquery - R Shiny : How do I put local images in shiny tables

r - 拟合 3 参数威 bool 分布

c++ - 将类似值 bmp 计数为像素值 C++

mysql - 如果 sql 计数为 NULL,则显示零

r - 在R中的数字序列中查找具有特定长度的所有子序列

xml - 在 R 中将 XML 数据转换为平面文件

mysql - 计算所有现有组合

sql - Oracle - 序列依赖于另一列?

sql-server - SQL Server - 实现序列