I have the following dataset:
test_df=data.frame(Group=c(1,1,1,1,2,2),var1=c(1,0,0,1,1,1),var2=c(0,0,1,1,0,0),var3=c(0,1,0,0,0,1))
Group | var1 | var2 | var3 |
---|---|---|---|
1 | 1 | 0 | 0 |
1 | 0 | 0 | 1 |
1 | 0 | 1 | 0 |
1 | 1 | 1 | 0 |
2 | 1 | 0 | 0 |
2 | 1 | 0 | 1 |
I want to add 3 columns (out1-3) for var1-3, which count number of rows until the first 1, by Group,
as shown below:
Group | var1 | var2 | var3 | out1 | out2 | out3 |
---|---|---|---|---|---|---|
1 | 1 | 0 | 0 | 1 | 3 | 2 |
1 | 0 | 0 | 1 | 1 | 3 | 2 |
1 | 0 | 1 | 0 | 1 | 3 | 2 |
1 | 1 | 1 | 0 | 1 | 3 | 2 |
2 | 1 | 0 | 0 | 1 | 0 | 2 |
2 | 1 | 0 | 1 | 1 | 0 | 2 |
I used this R code, I repeated it for my 3 variables, and my actual dataset contains more than only 3 columns. But it is not working:
test_var1<-select(test_df,Group,var1 )%>%
group_by(Group) %>%
mutate(out1 = row_number()) %>%
filter(var1 != 0) %>%
slice(1)