我有一个数据框,其中的 Select 是在会话中按顺序进行的.我想创建一个变量,指示每个选项的订单号.问题是,我只知道每次会议的第一 Select 是什么,我想知道每个 Select 的顺序.
假设我们有一个 Select ,一个信号告诉我们这是否是会话中的第一个 Select .假设数据是有序的.我想得到的是第三列(顺序),指示 Select 顺序,所以每次我们有一个1,顺序是1,它正在上升(2,3,…)直到下一个1.
df = data.frame(
choice = c('a','a','b','e','a','l','d','a'),
signal = c(1,0,0,1,0,0,0,0),
order = c(1,2,3,1,2,3,4,5))
choice signal order
1 a 1 1
2 a 0 2
3 b 0 3
4 e 1 1
5 a 0 2
6 l 0 3
7 d 0 4
8 a 0 5
所以我试着用map来解决这个问题,但由于一个明显的原因,它不起作用:我不知道如何更新 map 之外的向量.
my_order = df$signal
map(
.x = seq(1,(df$signal %>% length())),
.f = function(x) {
my_order[x] = ifelse(my_order[x]==1, my_order[x], my_order[x-1]+1)
my_order})
你知道我怎么用 map 来做吗?还有别的吗?我试图为我自己避免.