J*y 发帖数: 271 | 1 我有一组数据
group_id Reward Rank
1 A 1
1 B 0
2 B 1
2 A 0
2 C 0
需要转换成
group_id Reward Rank
1 A 1
1 A 0
2 B 1
2 B 0
2 B 0
也就是说每一组 每个人的Reward,和所在组Rank=1的Reward相同。
谢谢! |
E**********e 发帖数: 1736 | 2 sort by reward, 然后从新给group-id赋值, 用个if 不就行了。
你这个也要问? 新手。
【在 J*y 的大作中提到】 : 我有一组数据 : group_id Reward Rank : 1 A 1 : 1 B 0 : 2 B 1 : 2 A 0 : 2 C 0 : 需要转换成 : group_id Reward Rank : 1 A 1
|
J*y 发帖数: 271 | 3 请仔细看题
【在 E**********e 的大作中提到】 : sort by reward, 然后从新给group-id赋值, 用个if 不就行了。 : 你这个也要问? 新手。
|
m******r 发帖数: 1033 | 4 我仔细看题了,觉得你应该举一些‘一般性的’数字。 别用(0,1) . 这样很容易误导。
可以用个什么1.45, 6.21, 7.94什么的。
sas的风格, 要的就是一目了然。 |
J*y 发帖数: 271 | 5 实际数据rank column 只有这么两个possible values 0 and 1.
我们只care rank=1的reward
其实就是把所有rank=0的reward换成rank=1的。
很basic data manipulation. 可能要sort by rank, first.reward 和retain
statement
很久不用sas 一时理不清思路。手头也没有sas program 可以试验。
导。
【在 m******r 的大作中提到】 : 我仔细看题了,觉得你应该举一些‘一般性的’数字。 别用(0,1) . 这样很容易误导。 : 可以用个什么1.45, 6.21, 7.94什么的。 : sas的风格, 要的就是一目了然。
|
a*z 发帖数: 294 | 6 Jny说的对。
. by group_id
. sort by rank desc
. retain reward |
w*******9 发帖数: 1433 | 7 select A.group_id, A.rank, B.reward
from ds as A
left join ds as B
on A.group_id = B.group_id
and B.rank = 1; |
J*y 发帖数: 271 | 8 没有sas sql. 谢谢。
【在 w*******9 的大作中提到】 : select A.group_id, A.rank, B.reward : from ds as A : left join ds as B : on A.group_id = B.group_id : and B.rank = 1;
|
e*********5 发帖数: 151 | 9 会不会出现同一个组里有多个rank=1的但是reward不同的?,那样选那个reward给rank
=0的?
你举这个例子没有 |
b*****s 发帖数: 11267 | 10 那上r或者python帮着处理下
[在 Jny (kitty) 的大作中提到:]
:没有sas sql. 谢谢。 |
e*********5 发帖数: 151 | 11 前提是你的data没组里面肯定有并且保证只有一个rank=1的record,
proc sort data=data; by group_id descending rank; run;
data data_1;
set data;
retain tmp;
by group_id;
if first.group_id and rank=1 then tmp = reward;
else reward = tmp;
drop tmp;
run; |