如何在R中创建具有多列ID代码和日期的虚拟变量?

问题描述 投票:0回答:1

我有以下数据:

ID month year 1 2 2002 1 1 2003 1 3 2003 2 2 2017 2 2 2017 3 1 2012 3 1 2002 3 2 2014 3 2 2014 4 1 2003 5 2 2002 5 5 2015 我想创建以下虚拟变量:

ID month year 1st 2nd 3rd 1 2 2002 1 0 0
1 1 2003 0 1 0 1 3 2003 0 0 1 2 2 2017 1 0 0 2 2 2017 1 0 0 3 1 2012 1 0 0 3 1 2002 1 0 0 3 2 2014 0 1 0 3 2 2014 0 1 0 4 1 2003 1 0 0 5 2 2002 1 0 0 5 5 2015 0 1 0

除了五列(第1,第2,第3,第4,第5)

进展:

我将日期细节合并为一个,并使用以下函数 df$newcolumn <- ave(df$ID, df$date, FUN=seq_along) ,然后根据计数器为每个函数生成一个虚拟变量。但是,此函数将重复日期计为唯一,我不想要。

注意:有数千个数据点和ID

r variables multiple-columns dummy-variable
1个回答
0
投票

我为其他需要它的人找到了解决方案:

df$obs <- with(df, ave(df$date, df$ID, FUN=function(x) cumsum(!duplicated(x))))

它创建了一个计数,我只是创建了该计数的虚拟列

© www.soinside.com 2019 - 2024. All rights reserved.