如何在每个组内创建滞后变量? [Matlab]
How to create a lag variable within each group? [Matlab]
我的问题与此类似question about creating a lag variable。我需要做的就是在 Matlab
中实现这段代码。
例如,假设我们在 Matlab
中有以下两个向量:
ID =[2;2;2;2;3;3;5;5]
Pur=[0;1;2;3;1;2;4;5]
[ID,Pur]
ans =
2 0
2 1
2 2
2 3
3 1
3 2
5 4
5 5
我正在寻找一种方法来延迟每个 ID 的 Purchase
变量。得到类似的东西:
ans =
2 NA
2 0
2 1
2 2
3 NA
3 1
5 NA
5 4
感谢您的帮助。
这是我为此找到的一种方法:
ID =[2;2;2;2;3;3;5;5]
Pur=[0;1;2;3;1;2;4;5]
[uniqueValues,~,uniqueIndex] = unique(ID)
n = numel(uniqueValues);
shop_sess = accumarray(uniqueIndex,1);
shop_sess_cum=cumsum(shop_sess)
shop_sess_r=[0;shop_sess_cum2(1:length(shop_sess_cum)-1)]
lagPur=[]
for i=1:n
shop_sess_r_i=shop_sess_r(i)
shop_sess_i=shop_sess_cum(i)
temp=Pur(shop_sess_r_i+1:shop_sess_i)
lagtemp=lagmatrix(temp,1)
lagPur=[lagPur;lagtemp]
end
我的问题与此类似question about creating a lag variable。我需要做的就是在 Matlab
中实现这段代码。
例如,假设我们在 Matlab
中有以下两个向量:
ID =[2;2;2;2;3;3;5;5]
Pur=[0;1;2;3;1;2;4;5]
[ID,Pur]
ans =
2 0
2 1
2 2
2 3
3 1
3 2
5 4
5 5
我正在寻找一种方法来延迟每个 ID 的 Purchase
变量。得到类似的东西:
ans =
2 NA
2 0
2 1
2 2
3 NA
3 1
5 NA
5 4
感谢您的帮助。
这是我为此找到的一种方法:
ID =[2;2;2;2;3;3;5;5]
Pur=[0;1;2;3;1;2;4;5]
[uniqueValues,~,uniqueIndex] = unique(ID)
n = numel(uniqueValues);
shop_sess = accumarray(uniqueIndex,1);
shop_sess_cum=cumsum(shop_sess)
shop_sess_r=[0;shop_sess_cum2(1:length(shop_sess_cum)-1)]
lagPur=[]
for i=1:n
shop_sess_r_i=shop_sess_r(i)
shop_sess_i=shop_sess_cum(i)
temp=Pur(shop_sess_r_i+1:shop_sess_i)
lagtemp=lagmatrix(temp,1)
lagPur=[lagPur;lagtemp]
end