R 基于组内的起始点设置idx向前和向后列
我有一个关于我正在处理的事情的问题 假设我有这样一个数据框:R 基于组内的起始点设置idx向前和向后列,r,dataframe,count,tidyverse,R,Dataframe,Count,Tidyverse,我有一个关于我正在处理的事情的问题 假设我有这样一个数据框: | index | item | group | reference | |-------|------|-------|-----------| | 1 | a | 0 | 0 | | 2 | b | 0 | 0 | | 3 | c | 0 | 1 | | 4 | d | 0 |
| index | item | group | reference |
|-------|------|-------|-----------|
| 1 | a | 0 | 0 |
| 2 | b | 0 | 0 |
| 3 | c | 0 | 1 |
| 4 | d | 0 | 0 |
| 5 | e | 0 | 0 |
| 6 | f | 1 | 0 |
| 7 | g | 1 | 0 |
| 8 | h | 1 | 1 |
| 9 | i | 1 | 0 |
| 10 | j | 1 | 0 |
|-------|------|-------|-----------|
| index | item | group | reference | gidx |
|-------|------|-------|-----------|------|
| 1 | a | 0 | 0 | -2 |
| 2 | b | 0 | 0 | -1 |
| 3 | c | 0 | 1 | 0 |
| 4 | d | 0 | 0 | 1 |
| 5 | e | 0 | 0 | 2 |
| 6 | f | 1 | 0 | -2 |
| 7 | g | 1 | 0 | -1 |
| 8 | h | 1 | 1 | 0 |
| 9 | i | 1 | 0 | 1 |
| 10 | j | 1 | 0 | 2 |
|-------|------|-------|-----------|------|
我希望,根据参考==1
,按(,,组)对每个组内的行进行编号分组_
开始参考中的偏移量,并从下递增,从上递减。最后我应该有这样的东西:
| index | item | group | reference |
|-------|------|-------|-----------|
| 1 | a | 0 | 0 |
| 2 | b | 0 | 0 |
| 3 | c | 0 | 1 |
| 4 | d | 0 | 0 |
| 5 | e | 0 | 0 |
| 6 | f | 1 | 0 |
| 7 | g | 1 | 0 |
| 8 | h | 1 | 1 |
| 9 | i | 1 | 0 |
| 10 | j | 1 | 0 |
|-------|------|-------|-----------|
| index | item | group | reference | gidx |
|-------|------|-------|-----------|------|
| 1 | a | 0 | 0 | -2 |
| 2 | b | 0 | 0 | -1 |
| 3 | c | 0 | 1 | 0 |
| 4 | d | 0 | 0 | 1 |
| 5 | e | 0 | 0 | 2 |
| 6 | f | 1 | 0 | -2 |
| 7 | g | 1 | 0 | -1 |
| 8 | h | 1 | 1 | 0 |
| 9 | i | 1 | 0 | 1 |
| 10 | j | 1 | 0 | 2 |
|-------|------|-------|-----------|------|
有人知道如何处理这个问题吗。最好使用dplyr或tidyverse
提前感谢按“组”分组后,我们可以从“参考”为1的索引中减去行数(假设每个“组”的“参考”中只有一个1值)
库(tidyverse)
df1%>%
分组依据(分组)%>%
mutate(gidx=row_number()-which(reference==1))
#或者使用哪个.max`
#mutate(gidx=row_number()-which.max(参考))
#一个tibble:10x5
#分组:分组[2]
#索引项组引用gidx
#
#111A0-2
#2B00-1
#33C010
#44D001
#55E002
#6楼10-2
#7 g 10-1
#8H110
#9我10 1
#10 10 j 10 2
数据
df1