我有一个典型的“面板数据”(用计量经济学的术语来说,不是pandas面板对象)。dataframe有一个Date
列和一个ID
列,以及包含某些值的其他列。对于每个日期,我需要根据V1对IDs进行交叉排序,分成10组(十进制),并创建一个名为rank_col
(取值1到10)的新列来标识排名。然后将所有rank1,rank2,…rank10集合起来,得到一些数据,比如平均值,性病
这可以通过以下代码在SAS中轻松实现,同时也说明了我的目的:
proc sort data=df;
by Date;
proc rank data=df out=df_ranked groups=10;
var V1;
ranks rank_col;
by Date;
run;
df_ranked
与df
相同,只是它有更多名为rank_col
的列,其中包含每行所属的列组。
抱歉,我没有显示结构的示例数据,需要一个真正长的数据来说明。但SAS代码显示了我的目标。
谢谢你的帮助!
它可以更简单,不需要单独的foo
分配给列
细节
我发现了一个办法:
这假设
dec
为每一行保留正确的位置。如果你有更好的方法,请张贴,或指出任何错误的方法。
谢谢!
编辑:如果执行以下操作,则只需返回一个新的
ranks
列:相关问题 更多 >
编程相关推荐