我有一个我希望处理的数据集,而不是将其作为时间序列处理,我想总结一下时间行为。这是数据集:
business_id year
vcNAWiLM4dR7D2nwwJ7nCA 2007
vcNAWiLM4dR7D2nwwJ7nCA 2007
vcNAWiLM4dR7D2nwwJ7nCA 2009
UsFtqoBl7naz8AVUBZMjQQ 2004
UsFtqoBl7naz8AVUBZMjQQ 2005
cE27W9VPgO88Qxe4ol6y_g 2007
cE27W9VPgO88Qxe4ol6y_g 2007
cE27W9VPgO88Qxe4ol6y_g 2008
cE27W9VPgO88Qxe4ol6y_g 2010
我想把它变成这个:
business_id year yr_id
vcNAWiLM4dR7D2nwwJ7nCA 2007 1
vcNAWiLM4dR7D2nwwJ7nCA 2007 1
vcNAWiLM4dR7D2nwwJ7nCA 2009 2
UsFtqoBl7naz8AVUBZMjQQ 2004 1
UsFtqoBl7naz8AVUBZMjQQ 2005 2
cE27W9VPgO88Qxe4ol6y_g 2007 1
cE27W9VPgO88Qxe4ol6y_g 2007 1
cE27W9VPgO88Qxe4ol6y_g 2008 2
cE27W9VPgO88Qxe4ol6y_g 2010 3
换句话说,我希望ID与年份相同,但是business_id
是本地的,因此当程序找到另一个business_id
时它会重置。
这是否可以在R中轻松实现?
答案 0 :(得分:1)
我在SO中发现了另一个问题,答案有效地回答了这个问题,所以这应该被标记为重复。
https://stackoverflow.com/a/27896841/4858065
实现这一目标的方法是:
df %>% group_by(business_id) %>%
mutate(year_id = dense_rank(year))