Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 基于组内的起始点设置idx向前和向后列_R_Dataframe_Count_Tidyverse - Fatal编程技术网

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